客户端connect()失败,服务器accept()成功。为什么?

时间:2011-07-14 09:50:18

标签: c++ sockets mfc

我有一个客户端 - 服务器系统,其中简单的客户端应该连接到服务器。当我点击客户端上的连接时会发生以下情况:

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

此调用失败(connectionStatus为0),GetLastError返回10035(再试一次)

另一方面,服务器接受连接!怎么样?像这样:服务器套接字的OnReceive()函数的第一行上的断点被命中

BOOL receivedConnection = Accept( m_sockRecv );

返回true。

  1. 如果connect()尝试失败,为什么此Accept()成功?这是我不明白的。
  2. 如何阻止CAsyncSocket?
  3. 提前致谢。

1 个答案:

答案 0 :(得分:1)

这是expected behavior。错误是WSAEWOULDBLOCK,这意味着您需要等待OnConnect事件才能知道连接何时完全建立。我不确定是否有办法使其阻塞,异步包装器的重点是使所有内容都无阻塞。如果你想要阻止语义,你应该使用CSocket