我正在做一個插座上以下BeginReceive電話:如果套接字仍然連接,EndReceive是否會返回零?
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將返回零,但m_socket .Connected返回true,所以我再次調用BeginReceive。這發生在一個永不停止的緊密循環中。當EndReceive返回零時,從文檔中不清楚。我認爲它只發生在套接字關閉時,但這似乎不是真的。
所以問題仍然存在,在什麼情況下EndReceive可以返回零?
檢查了這一點。 http://stackoverflow.com/questions/3970825/when-does-endreceive-return-zero-bytes 看來除了3種情況之外,它會返回0. – 2014-11-04 17:05:13
列維,我已經看到了那篇文章。這與我所問的問題並無關係。我具體詢問EndReceive的返回值,如果返回值爲零意味着套接字上不會有更多數據可用。 – bpeikes 2014-11-04 18:08:03