示例#1
0
        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);
        }
示例#2
0
        public async Task Stream1() //Client -> -(Stream)> Server     (Client sends message to server)
        {
            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 testData = "123", data = "";

            server.OnDataReceiveAsync += async(sender, message) =>  //Receive stream from client
            {
                await using var stream = new MemoryStream();
                await message.ReceiveStreamAsync(stream);

                data = Encoding.UTF8.GetString(stream.ToArray());
            };

            //Send stream to server
            await using var dataStream = new MemoryStream(Encoding.UTF8.GetBytes(testData));
            client.Send("Stream");
            await client.SendStreamAsync(dataStream);

            TestHelper.WaitWhileTrue(() => data == "");
            Assert.AreEqual(testData, data);
        }
示例#3
0
文件: Send.cs 项目: zhouzu/EasyTcp
        public void Setup()
        {
            _port = TestHelper.GetPort();
            var server = new EasyTcpServer();

            server.Start(_port);
        }
示例#4
0
文件: Server.cs 项目: I0xAF/EasyTcp
        static void Main(string[] args)
        {
            Console.WriteLine("Server starting...");
            EasyTcpServer server = new EasyTcpServer(System.Reflection.Assembly.GetExecutingAssembly());

            server.OnServerStarted += (sender, s) =>
            {
                Console.WriteLine("Server started!");
            };
            server.ClientConnected += (sender, client) =>
            {
                Console.WriteLine($"Client [{client.RemoteEndPoint.ToString()}] connected!");
            };
            server.ClientDisconnected += (sender, client) =>
            {
                Console.WriteLine($"Client [{client.RemoteEndPoint.ToString()}] disconnected!");
            };
            server.DataReceived += (sender, msg) =>
            {
                Console.WriteLine($"PacketType: {msg.GetPacket.PacketType}");
                server.PacketHandler(msg, false);
            };
            server.OnError += (sender, ex) =>
            {
                Console.WriteLine($"{ex.Message}\n{ex.StackTrace}");
            };
            server.Start("127.0.0.1", 6124, 10);
            Task.Delay(-1).Wait();
        }
示例#5
0
        public void Stream2() //Client -> Server -(Stream)> Client     (Client requests stream from server)
        {
            ushort port = TestHelper.GetPort();

            using var server = new EasyTcpServer();
            server.Start(port);

            string testData = "123", data = null;

            using var client = new EasyTcpClient();
            Assert.IsTrue(client.Connect(IPAddress.Any, port));

            server.OnDataReceive += (sender, message) => //Send stream if client requests
            {
                using var dataStream = new MemoryStream(Encoding.UTF8.GetBytes(testData));
                message.Client.Send("Stream");
                message.Client.SendStream(dataStream);
            };

            client.OnDataReceive += (sender, message) => //Receive stream from server
            {
                using var stream = new MemoryStream();
                message.ReceiveStream(stream);
                data = Encoding.UTF8.GetString(stream.ToArray());
            };
            client.Send("GetStream"); //Request stream

            TestHelper.WaitWhileTrue(() => data == null);
            Assert.AreEqual(testData, data);
        }
示例#6
0
        private static void StartServer(int port)
        {
            try
            {
                server = new EasyTcpActionServer();
                server.Start(Port);

                bool exit = false;

                Console.WriteLine($">> Server started on ip: {LocalIP} (public ip adress: {PublicIP})!");
                Console.WriteLine($">> Server started listening to port {port}!");
                Console.WriteLine(">> Press escape to close the server ...");
                while (!exit)
                {
                    ConsoleKeyInfo key = Console.ReadKey(true);
                    if (key.Key == ConsoleKey.Escape)
                    {
                        exit = true;
                    }
                }

                server.Dispose();

                Console.WriteLine(Environment.NewLine + ">> Server closed! Press any key to close the window ...");
                Console.ReadKey(true);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
示例#7
0
        public void Start4()
        {
            ushort port = TestHelper.GetPort();

            using var server = new EasyTcpServer();
            server.Start(port);
        }
示例#8
0
        public void Setup()
        {
            _port = TestHelper.GetPort();
            var server = new EasyTcpServer();

            server.Start(_port);
            server.OnDataReceive += (sender, message) => message.Client.Send(message.Data);
        }
示例#9
0
        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();
            };
        }
示例#10
0
        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);
        }
示例#11
0
        public void TestIp()
        {
            ushort port = TestHelper.GetPort();

            using var server = new EasyTcpServer();
            server.Start(port);

            using var client = new EasyTcpClient();
            Assert.IsTrue(client.Connect(IPAddress.Loopback, port));

            Assert.AreEqual(IPAddress.Loopback, client.GetIp());
            Assert.AreEqual(IPAddress.Loopback, server.GetConnectedClients().First().GetIp());
        }
示例#12
0
        public void Start2()
        {
            ushort port = TestHelper.GetPort();

            using var server = new EasyTcpServer();
            server.Start(IPAddress.Any, port);

            //Start with dualMode socket
            ushort port2 = TestHelper.GetPort();

            using var server2 = new EasyTcpServer();
            server2.Start(IPAddress.IPv6Any, port2, true);
        }
示例#13
0
        public void Start3()
        {
            ushort port = TestHelper.GetPort();

            using var server = new EasyTcpServer();
            server.Start("127.0.0.1", port);

            //Start with dualMode socket
            ushort port2 = TestHelper.GetPort();

            using var server2 = new EasyTcpServer();
            server2.Start("::1", port2, true);
        }
示例#14
0
        } // End of function, dispose/disconnect client because of using statement

        public static void Start()
        {
            // Create new easyTcpServer
            using var server = new EasyTcpServer();

            // Start server
            server.Start(Port);

            // Print all receiving data
            server.OnDataReceive += (s, message) => Console.WriteLine(message);

            Console.WriteLine("Press enter to shutdown basic server...");
            Console.ReadLine();
        }
示例#15
0
        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);
        }
示例#16
0
        public static async Task <TestData> GetTestConnection(EasyTcpClient client = null, EasyTcpServer server = null)
        {
            var port = GetPort();

            server ??= new EasyTcpServer();
            client ??= new EasyTcpClient();
            server.Start(port);
            await client.ConnectAsync(IPAddress.Loopback, port);

            return(new TestData()
            {
                Client = client, Server = server
            });
        }
示例#17
0
        public void SendAllArray()
        {
            ushort port   = TestHelper.GetPort();
            var    server = new EasyTcpServer();

            server.Start(port);

            var client = new EasyTcpClient();

            Assert.IsTrue(client.Connect(IPAddress.Any, port));

            byte[] data = new byte[100];
            server.SendAll(data);
        }
示例#18
0
        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
        }
示例#19
0
        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);
        }
示例#20
0
 public void ServerStart()
 {
     ServerEvents.Info?.Invoke("Server starting...");
     Server.OnServerStarted    += OnServerStarted;
     Server.ClientConnected    += OnClientConnected;
     Server.ClientDisconnected += OnClientDisconnected;
     Server.DataReceived       += (sender, msg) =>
     {
         Server.PacketHandler(msg, false);
     };
     Server.OnError += (sender, ex) =>
     {
         Console.WriteLine($"{ex.Message}\n{ex.StackTrace}");
     };
     Server.Start("127.0.0.1", 6124, 99999);
 }
示例#21
0
        public void SendAllActionInt()
        {
            ushort port   = TestHelper.GetPort();
            var    server = new EasyTcpServer();

            server.Start(port);

            var client = new EasyTcpClient();

            Assert.IsTrue(client.Connect(IPAddress.Any, port));

            int data = 123;

            server.SendAllAction(0, data);
            server.SendAllAction("ECHO", data);
        }
示例#22
0
        public void OnDisconnectServer()
        {
            var port = TestHelper.GetPort();

            using var server = new EasyTcpServer();
            server.Start(IPAddress.Any, port);

            int x = 0;

            server.OnDisconnect += (o, c) => Interlocked.Increment(ref x);

            var client = new EasyTcpClient();

            Assert.IsTrue(client.Connect(IPAddress.Any, port));
            client.Dispose();

            TestHelper.WaitWhileFalse(() => x == 1);
            Assert.AreEqual(1, x);
        }
示例#23
0
        public void OnConnect1()
        {
            ushort port = TestHelper.GetPort();

            using var server = new EasyTcpServer();
            server.Start(port);

            int connectCount = 0;

            server.OnConnect += (sender, c) =>
            {
                Interlocked.Increment(ref connectCount); //Async lambda, so thread safe increase integer
                Console.WriteLine($"Client {connectCount} connected");
            };

            using var client = new EasyTcpClient();
            Assert.IsTrue(client.Connect(IPAddress.Any, port));

            TestHelper.WaitWhileTrue(() => connectCount == 0);
            Assert.AreEqual(1, connectCount);
        }
示例#24
0
        public void TestClient()
        {
            ushort port = TestHelper.GetPort();

            using var server = new EasyTcpServer();
            server.Start(port);

            using var client      = new EasyTcpActionClient();
            client.OnDataReceive += (sender, message) => Console.WriteLine("123");
            Assert.IsTrue(client.Connect(IPAddress.Loopback, port));

            string data = "test";

            foreach (var c in server.GetConnectedClients())
            {
                var reply = c.SendActionAndGetReply(0, data);
                Assert.AreEqual(data, reply.ToString());

                reply = c.SendActionAndGetReply("ECHO", data);
                Assert.AreEqual(data, reply.ToString());
            }
        }