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