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()) }); } } }); }
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); } }
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); } }); }
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); } } }