首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

SOCKET通讯错误有关问题

2011-12-25 
SOCKET通讯错误问题自己照书写了一个SOCKET通讯SERVER端示例,发现当客户端关闭连接的时候,服务器端会一直

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);
                                        MessageBox.Show(ClientCommand);


                                        byte[]   sendbytes   =   System.Text.Encoding.UTF8.GetBytes( "Socket   Test001 ".ToCharArray());
                                        client.Send(sendbytes,   sendbytes.Length,   0);
                        }
                }
        }

[解决办法]
在客户端 的关闭的安钮事件上 如果关闭 则传输信息给服务器 “客户端断开连接...” 服务器 开个线程接受信息就OK了。
[解决办法]
int receiveCount = client.Receive(buffer, buffer.Length, 0);
if(receiveCount> 0)
继续处理;
else
连接断开;

关于Socket的处理我有几篇文章,你可以去看看,我的Blog是:http://wzd24.cnblogs.com

热点排行