public void OnDataReceive2() { // Example receiving for the client ushort port = TestHelper.GetPort(); using var server = new EasyTcpServer(); server.Start(port); using var client = new EasyTcpClient(); Assert.IsTrue(client.Connect(IPAddress.Any, port)); const string message = "Hello client!"; int receiveCount = 0; client.OnDataReceive += (sender, receivedMessage) => { //Async lambda, so thread safe increase integer if (message.Equals(receivedMessage.ToString())) { Interlocked.Increment(ref receiveCount); } Console.WriteLine($"[{receiveCount}]Received message: {receivedMessage.ToString()}"); }; server.SendAll(message); server.SendAll(message); TestHelper.WaitWhileTrue(() => receiveCount < 2); Assert.AreEqual(2, receiveCount); }
public void SendString() { ushort port = TestHelper.GetPort(); using var server = new EasyTcpServer(); server.Start(port); using var client = new EasyTcpClient(); Assert.IsTrue(client.Connect(IPAddress.Any, port)); string data = "Data"; server.SendAll(data); server.SendAll(data, Encoding.UTF32); //Send with different encoding }
/// <summary> /// Send data (byte[]) to connected clients /// </summary> /// <param name="server"></param> /// <param name="data">data to send to connected clients</param> /// <param name="compression">compress data using GZIP if set to true</param> public static void SendAll(this EasyTcpServer server, byte[] data, bool compression = false) { if (compression) { data = CompressionUtil.Compress(data); } server.SendAll(dataArray: data); }
/// <summary> /// Send action (byte[]) to connected clients /// </summary> /// <param name="server"></param> /// <param name="action">action code</param> /// <param name="data">data to send to connected clients</param> /// <param name="compression">compress data using GZIP if set to true</param> public static void SendAllAction(this EasyTcpServer server, int action, byte[] data = null, bool compression = false) { if (compression && data != null) { data = CompressionUtil.Compress(data); } server.SendAll(BitConverter.GetBytes(action), data); }
private static void OnDataReceive(object sender, Message message) { Console.WriteLine($"Server: Received data, received: {message}"); Console.WriteLine("Server: Broadcasting received data"); EasyTcpClient client = message.Client; // Get client from message EasyTcpServer server = (EasyTcpServer)sender; // Convert sender to server or client server.SendAll(message); }
public void SendAllArray() { ushort port = TestHelper.GetPort(); var server = new EasyTcpServer().Start(port); using var client = new EasyTcpClient(); Assert.IsTrue(client.Connect(IPAddress.Any, port)); byte[] data = new byte[100]; server.SendAll(data); }
public void SendBool() { ushort port = TestHelper.GetPort(); using var server = new EasyTcpServer(); server.Start(port); using var client = new EasyTcpClient(); Assert.IsTrue(client.Connect(IPAddress.Any, port)); server.SendAll(true); }
public void SendDouble() { ushort port = TestHelper.GetPort(); using var server = new EasyTcpServer(); server.Start(port); using var client = new EasyTcpClient(); Assert.IsTrue(client.Connect(IPAddress.Any, port)); double data = 123.0; server.SendAll(data); }
public async Task TestReceive() { ushort port = TestHelper.GetPort(); using var server = new EasyTcpServer().Start(port); using var client = new EasyTcpClient(); Assert.IsTrue(client.Connect(IPAddress.Any, port)); var receivedData = client.ReceiveAsync(); TestHelper.WaitWhileFalse(() => server.ConnectedClientsCount == 1); server.SendAll("Data"); Assert.AreEqual("Data", (await receivedData).ToString()); }
public void SendLong() { ushort port = TestHelper.GetPort(); var server = new EasyTcpServer(); server.Start(port); var client = new EasyTcpClient(); Assert.IsTrue(client.Connect(IPAddress.Any, port)); long data = 123; server.SendAll(data); }
public static async Task Start() { using var server = new EasyTcpServer(); var socket = server.BaseSocket; // Get baseSocket, null when server is disposed // Start server on given port (default address: "0.0.0.0") server.Start(Port); // Start server on given port and address server.Start("0.0.0.0", Port); server.Start(IPAddress.Any, Port); // Send message to all connected clients server.SendAll("Hello clients!"); // Get copy of list with connected clients var connectedClientsList = server.GetConnectedClients(); var connectedSocketsList = server.GetConnectedSockets(); // Get amount of connected clients var connectedClientsCount = server.ConnectedClientsCount; server.OnDataReceive += (sender, message) => { // Get client var client = message.Client; // Get endpoint or ip address of client var endPoint = client.GetEndPoint(); var ip = client.GetIp(); // Use all the other clientUtil on client client.Send("Hello from server!"); // Determines whether message is compressed var isCompressed = message.IsCompressed(); /* Decompress message, * ignored when message is not compressed */ var data = message.Decompress(); }; }
public void PacketTest() { ushort port = TestHelper.GetPort(); using var server = new EasyTcpServer().Start(port); using var client = new EasyTcpClient(); Assert.IsTrue(client.Connect(IPAddress.Loopback, port)); var testData = new ExamplePacket("Test data"); int received = 0; client.OnDataReceive += (sender, message) => { string data = message.ToPacket <ExamplePacket>().DataStr; if (data.Equals(testData.DataStr)) { Interlocked.Increment(ref received); } }; server.SendAll(testData); TestHelper.WaitWhileFalse(() => received == 1); Assert.AreEqual(1, received); }
/// <summary> /// Send data (double) to connected clients /// </summary> /// <param name="server"></param> /// <param name="data">data to send to connected clients</param> public static void SendAll(this EasyTcpServer server, double data) => server.SendAll(BitConverter.GetBytes(data));
/// <summary> /// Send action with data (custom class) to all connected clients /// </summary> /// <param name="server"></param> /// <param name="action">action code as string</param> /// <param name="o">custom class</param> public static void SendAll(this EasyTcpServer server, string action, object o, bool compression = false) => server.SendAll(action.ToActionCode(), o, compression);
/// <summary> /// Send data (object) to connected clients /// </summary> /// <param name="server"></param> /// <param name="data">data to send to connected clients</param> /// <param name="compression">compress data using GZIP if set to true</param> public static void SendAll(this EasyTcpServer server, object data, bool compression = false) => server.SendAll(server?.Serialize(data), compression);
/// <summary> /// Send data (IEasyTcpPacket) to connected clients /// </summary> /// <param name="server"></param> /// <param name="data">data to send to connected clients</param> /// <param name="compression">compress data using GZIP if set to true</param> public static void SendAll(this EasyTcpServer server, IEasyTcpPacket data, bool compression = false) => server.SendAll(data.Data, compression);
/// <summary> /// Send data (string) to connected clients /// </summary> /// <param name="server"></param> /// <param name="data">data to send to connected clients</param> /// <param name="encoding">encoding type (Default: UTF8)</param> /// <param name="compression">compress data using GZIP if set to true</param> public static void SendAll(this EasyTcpServer server, string data, Encoding encoding = null, bool compression = false) => server.SendAll((encoding ?? Encoding.UTF8).GetBytes(data), compression);