예제 #1
0
        private static void Listen()
        {
            Task.Run(() =>
            {
                var data = new List <byte>();
                byte[] buffer;

                while (Client.Connected)
                {
                    data.Clear();

                    while (Client.Available > 0)
                    {
                        buffer = new byte[Math.Min(Conduit.BufferSize, Client.Available)];

                        Client.GetStream().Read(buffer, 0, buffer.Length);

                        data.AddRange(buffer);
                    }

                    if (data.Count > 0)
                    {
                        DataReceived(null, new PacketReceivedEventArgs {
                            Packet = ConduitPacket.Deserialize(data.ToArray())
                        });
                    }
                }
            });
        }
예제 #2
0
        private static void Listen()
        {
            Task.Run(() =>
            {
                var data = new List <byte>();
                byte[] buffer;

                while (true)
                {
                    foreach (var client in Clients)
                    {
                        data.Clear();
                        if (client.Connected)
                        {
                            var stream = client.GetStream();

                            while (client.Available > 0)
                            {
                                buffer = new byte[Math.Min(Conduit.BufferSize, client.Available)];

                                stream.Read(buffer, 0, buffer.Length);

                                data.AddRange(buffer);
                            }

                            if (data.Count > 0)
                            {
                                DataReceived(null, new PacketReceivedEventArgs {
                                    Packet = ConduitPacket.Deserialize(data.ToArray())
                                });
                            }
                        }
                    }

                    if (!Server.Pending())
                    {
                        continue;
                    }

                    Clients.Add(Server.AcceptTcpClient());

                    ClientConnected(null, EventArgs.Empty);
                }
            });
        }