2011-07-14 47 views
0

我有一個客戶端 - 服務器系統,客戶端應該連接到服務器。這是當我點擊客戶端連接會發生什麼:客戶端連接()失敗,服務器接受()成功。爲什麼?

BOOL connectionStatus = m_sockClient.Connect(sIpAddr, 27386); 

此調用失敗(connectionStatus爲0),並GetLastError返回10035(再試)

在另一方面,服務器接受連接!怎麼樣?這樣的:上的onReceive的第一線斷點()服務器插槽的功能被擊中並

BOOL receivedConnection = Accept(m_sockRecv); 

返回true。

  1. 如果connect()嘗試失敗,爲什麼Accept()成功?這是我不明白的。
  2. 如何使CAsyncSocket阻止?

在此先感謝。

回答

1

這是expected behavior。錯誤是WSAEWOULDBLOCK,這意味着您需要等待OnConnect事件才能知道連接何時完全建立。我不確定是否有辦法讓它阻塞,異步包裝的重點是讓所有東西都是非阻塞的。如果你想阻塞語義,你應該使用CSocket

相關問題