读书人

SOCKET通讯错误有关问题

发布时间: 2011-12-25 23:21:20 作者: rapoo

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

读书人网 >C#

热点推荐