日期:2014-05-19  浏览次数:20837 次

SOCKET通讯错误问题
自己照书写了一个SOCKET通讯SERVER端示例,发现当客户端关闭连接的时候,服务器端会一直做循环,请问如何在服务器端判断客户端已经关闭?以下是服务器端类代码.
        class   SocketFunction
        {
                private   static   TcpListener   Listener;
                private   static   Socket   ClientSocket;
                private   static   IPEndPoint     ListenPort;
                private   static   Thread   ClientService;

                public   static   void   StartListening()
                {
                        ListenPort   =   new   IPEndPoint(IPAddress.Any,   2048);
                        Listener   =   new   TcpListener(ListenPort);
                        Listener.Start();
                        while   (true)
                        {
                                Socket   s   =   Listener.AcceptSocket();
                                ClientSocket   =   s;
                                ClientService   =   new   Thread(new   ThreadStart(ServiceClient));
                                ClientService.Start();
                        }
                }
                private   static   void   ServiceClient()
                {
                        Socket   client   =   ClientSocket;
                        bool   KeepAlive   =   true;
                        while   (KeepAlive)
                        {
                                        byte[]   buffer   =   new   byte[1024];
                                        client.Receive(buffer,   buffer.Length,   0);
                                        string   ClientCommand   =   System.Text.Encoding.UTF8.GetString(buffer);