【问题标题】:Client connect() failed, server accept() succeeded. Why?客户端 connect() 失败,服务器 accept() 成功。为什么?
【发布时间】:2011-07-14 21:05:39
【问题描述】:

我有一个客户端-服务器系统,客户端应该连接到服务器。这是我在客户端上单击连接时发生的情况:

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

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

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

BOOL receivedConnection = Accept( m_sockRecv );

返回真。

  1. 如果 connect() 尝试失败,为什么这个 Accept() 成功?这是我不明白的。
  2. 如何使 CAsyncSocket 阻塞?

提前致谢。

【问题讨论】:

    标签: c++ sockets mfc


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-06
      • 1970-01-01
      • 2016-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-24
      • 1970-01-01
      相关资源
      最近更新 更多