我在套接字上进行以下BeginReceive调用:
m_socket.BeginReceive(m_buffer, 0, m_buffer.Length, SocketFlags.Partial, this.ReceiveCallback, null);
在我的类中,我调用
ReceiveCallback
函数。try {
int bytesReadFromSocket = m_socket.EndReceive(ar);
if(bytesReadFromSocket > 0) {
// Do some processing
}
}
finally {
if(m_socket.Connected) m_socket.BeginReceive(m_buffer, 0, m_buffer.Length, SocketFlags.Partial, this.ReceiveCallback, null);
}
我遇到的问题是EndReceive返回0,但m_socket.Connected返回true,所以我再次调用BeginReceive。这在一个紧密的循环中发生,它永远不会停止。从文档中不清楚EndReceive何时返回零。我认为只有当套接字关闭时才会发生,但这似乎不是真的。
因此,问题仍然存在,EndReceive在什么情况下会返回零?