Esempio n. 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())
                        });
                    }
                }
            });
        }
Esempio n. 2
0
        public static void Send(ConduitPacket packet)
        {
            var data   = packet.Serialize().ToList();
            var stream = Client.GetStream();

            for (int i = 0; i < data.Count; i += Conduit.BufferSize)
            {
                var chunk = data.GetRange(i, Math.Min(Conduit.BufferSize, data.Count - i)).ToArray();

                stream.Write(chunk, 0, chunk.Length);
            }
        }
Esempio n. 3
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);
                }
            });
        }
Esempio n. 4
0
        public static void Send(ConduitPacket packet)
        {
            //Remove disconnected clients
            Clients = Clients.Where(x => x.Connected).ToList();

            var data = packet.Serialize().ToList();

            foreach (var client in Clients)
            {
                var stream = client.GetStream();

                for (int i = 0; i < data.Count; i += Conduit.BufferSize)
                {
                    var chunk = data.GetRange(i, Math.Min(Conduit.BufferSize, data.Count - i)).ToArray();

                    stream.Write(chunk, 0, chunk.Length);
                }
            }
        }