如何在Socket中保持连接并从客户端获取正确的数据?

问题描述 投票:0回答:0

我尝试通过套接字连接服务器和客户端。 所以,我想保持他们之间的联系,然后从客户端监听数据。如果数据是正确的条件,则服务器将回复数据输入。如果数据不正确,则继续监听从客户端发送的数据。我有如下代码,但这是错误的。

   private static void server()
   {   
            var localEndPoint = new IPEndPoint(IPAddress.Parse("192.168.1.135"), Int32.Parse("8888"));
            // this socket listening connect from client
            var listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            listener.Bind(localEndPoint);
            listener.Listen(10);
            var size = 1024;
            var receiveBuffer = new byte[size];
            while (true)
            {
                // this socket is receive/send data
                var socket = listener.Accept();
                var length = socket.Receive(receiveBuffer);
                socket.Shutdown(SocketShutdown.Receive);
                var text = Encoding.ASCII.GetString(receiveBuffer, 0, length);              
                if (text.Contains("CLIENT[123]:"))
                {
                    Console.Write("#Send to client >>> ");
                    var reply = Console.ReadLine();
                    var sendBuffer = Encoding.ASCII.GetBytes(reply);
                    socket.Send(sendBuffer);
                    socket.Shutdown(SocketShutdown.Send);
                    socket.Close();
                    Array.Clear(receiveBuffer, 0, size);
                }
            }
   }

在客户端,我会这样发送数据

CLIENT[123]: Hi server, are you ok ?

从客户端收到此数据后,由于条件正确,服务器将响应内容输入。 所以,我不知道我弄错了什么。

c# sockets server client tcplistener
© www.soinside.com 2019 - 2024. All rights reserved.