我正在编写一个简单的套接字客户端,它只使用一个套接字。因此,我想我可以重复使用一个SocketAsyncEventArgs来处理所有接收操作。只要套接字连接正常,这个方法就能正常工作。但是当服务器断开连接时,客户端将进入无限接收循环,在控制台上不断输出“Receive Success”。
当套接字断开连接时,e.SocketError != SocketError.Success应该为true,对吗?
以下是部分代码:
当套接字断开连接时,e.SocketError != SocketError.Success应该为true,对吗?
以下是部分代码:
private void Completed(object sender, SocketAsyncEventArgs e)
{
if (e.SocketError != SocketError.Success)
status = 0;
System.Console.WriteLine(e.LastOperation + " " + e.SocketError);
if (status == 1)
{
switch (e.LastOperation)
{
case SocketAsyncOperation.Connect:
ProcessConnect(e);
break;
case SocketAsyncOperation.Receive:
ProcessReceive(e);
break;
case SocketAsyncOperation.Send:
ProcessSend(e);
break;
default:
status = 0;
break;
}
}
if (status != 1)
CloseSocket();
}
private void ProcessReceive(SocketAsyncEventArgs e)
{
if (!socket.ReceiveAsync(e))
Completed(null, e);
}