主题:[讨论]请教一下Socket的一个机制
异步Socket接收数据中
mySocket.BeginReceive(bytes,0,512,0,ReceiveCallback,mySocket);投递异步接收事件
private void ReceiveCallback(IAsyncResult ar)
{
Socket sock = (Socket)ar.AsyncState;
int receiveLength = sock.EndReceive(ar);////关键点
}
在上面所指的关键点中,sock在此处阻塞,直到有数据接收
如果receiveLength =0;说明接收错误,也可能是Socket断开,此时可以加入断线处理机制。
那么,我想请教高手的是:
阻塞在此的线程是否能准确的判断远程Socket断开?是否远程Socket断开就会使阻塞在此的线程马上返回?我在网上查了很多资料,一直没寻到能准确判断Socket断线的方法。
mySocket.BeginReceive(bytes,0,512,0,ReceiveCallback,mySocket);投递异步接收事件
private void ReceiveCallback(IAsyncResult ar)
{
Socket sock = (Socket)ar.AsyncState;
int receiveLength = sock.EndReceive(ar);////关键点
}
在上面所指的关键点中,sock在此处阻塞,直到有数据接收
如果receiveLength =0;说明接收错误,也可能是Socket断开,此时可以加入断线处理机制。
那么,我想请教高手的是:
阻塞在此的线程是否能准确的判断远程Socket断开?是否远程Socket断开就会使阻塞在此的线程马上返回?我在网上查了很多资料,一直没寻到能准确判断Socket断线的方法。