【问题标题】:Send/Receive TCP/IP on C++在 C++ 上发送/接收 TCP/IP
【发布时间】:2012-08-28 17:49:12
【问题描述】:

我正在尝试通过 C++ 上的 TCP/IP 协议在两台计算机之间进行通信。我在同一个套接字上发送和接收。但是有一个问题,我没有迹象表明第二台计算机正在尝试向我发送一些东西。

是否有任何标志或指示器告诉我有人正在向我发送某些东西而我必须接收?

【问题讨论】:

    标签: c++ tcp winsock2


    【解决方案1】:

    使用 select() 函数等待一个或多个套接字上的事件。通过零超时,您还可以检查是否有任何可用数据。

    【讨论】:

      【解决方案2】:

      这取决于特定的套接字 API。在最常见的情况下,您只需挂起接收(或使用异步套接字 API 停放回调),一旦有数据就会解除阻塞。一些套接字 API 有方法让您判断是否有数据可供获取,但最简单的方法是简单地异步接收并等待套接字堆栈向您发出回调。

      【讨论】:

      • 我正在使用最简单的代码函数,例如:listen() recv() send() 等。我在这方面几乎是新手。
      • 您可以将接收超时设置为较短的值,如果您需要将内容保留在一个线程上,则偶尔调用 recv,或者您将一个线程专用于接收。
      • 问题是,我如何理解它,每当我调用一个 recv func 程序时,它就会“挂在”该函数中,直到我收到它,这就是我想要避免的。
      • 我的意思是,当你把接收超时时间设置成很短的时间后,在没有数据的情况下,该功能会解锁。
      猜你喜欢
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      • 2017-10-24
      • 2019-11-27
      • 2012-10-17
      • 2013-06-28
      • 1970-01-01
      • 2015-12-14
      相关资源
      最近更新 更多