Beispiel #1
0
    public void Update()
    {
        if (server.Pending())
        {
            clients.Add(server.AcceptTcpClient());
        }
        foreach (TcpClient client in clients)
        {
            var stream = client.GetStream();
            if (stream.DataAvailable)
            {
                byte[] buffer = NetworkStreamReader.Read(stream, client.ReceiveBufferSize);

                Mirroring(client, buffer);

                var message = restMessage + System.Text.Encoding.UTF8.GetString(buffer);
                restMessage = "";
                string[] messages = message.Split('뷁');

                for (int i = 1; i < messages.Length; ++i)
                {
                    string   msgRaw = messages[i];
                    string[] msgs   = msgRaw.Split('끊');

                    if (msgs.Length == 1)
                    {
                        restMessage = msgs[0];
                        continue;
                    }
                    string msg = msgs[0];

                    if (msg.Length == 0)
                    {
                        continue;
                    }
                    if (msg.Length == 0)
                    {
                        continue;
                    }
                    foreach (OnMessageReceived fn in onMessageReceived)
                    {
                        NetworkDecorator.NetworkMessage m = NetworkDecorator.StringToMessage(msg);
                        fn(client, m);
                        if (m.header == NetworkHeader.ClOSE)
                        {
                            removingClients.Add(client);
                        }
                    }
                }
            }
        }
        foreach (TcpClient client in removingClients)
        {
            clients.Remove(client);
        }
        removingClients.Clear();
    }
Beispiel #2
0
    public void Update()
    {
        if (!NetworkValues.isNetwork)
        {
            return;
        }
        var stream = client.GetStream();

        if (stream.CanRead && stream.DataAvailable)
        {
            byte[] buffer = NetworkStreamReader.Read(stream, client.ReceiveBufferSize);

            var message = restMessage + System.Text.Encoding.UTF8.GetString(buffer);
            restMessage = "";
            string[] messages = message.Split('뷁');

            if (onMessageReceived.Count > 0)
            {
                for (int i = 1; i < messages.Length; ++i)
                {
                    string   msgRaw = messages[i];
                    string[] msgs   = msgRaw.Split('끊');

                    if (msgs.Length == 1)
                    {
                        restMessage = msgs[0];
                        continue;
                    }
                    string msg = msgs[0];

                    if (msg.Length == 0)
                    {
                        continue;
                    }

                    NetworkDecorator.NetworkMessage m = NetworkDecorator.StringToMessage(msg);
                    foreach (OnMessageReceived fn in onMessageReceived)
                    {
                        fn(m);
                    }
                }
            }
        }
    }