【问题标题】:boost::asio::tcp two-way communication on a socketboost::asio::tcp 套接字上的双向通信
【发布时间】:2016-12-21 11:29:53
【问题描述】:

我正在使用boost::asioTCP communicationC++ 来创建通过TCP socket 进行通信的客户端和服务器。我需要客户端和服务器都能够相互发送和接收数据。我能够让它们通过一个套接字进行通信,在该套接字上,服务器不断地发送一些数据,而客户端则不断地读取套接字。它有效。

现在换一种方式通信: 为了让客户端发送一些数据和服务器能够读取它,我可以使用相同的套接字吗?或者我需要使用单独的插座吗?两个通过 TCP 通信的应用程序是否可以在同一个套接字上读写?

如果可以的话,一个基于 boost::asio 的示例来说明这一点会很棒。但我能够找到仅关于单向通信的示例。

【问题讨论】:

  • boost 页面上的示例有什么问题?我将从异步回显服务器开始。
  • 所有的 boost 示例都围绕客户端服务器方法。我不确定是否有任何示例演示了双向通信。检查回显服务器示例

标签: c++ sockets boost tcp boost-asio


【解决方案1】:

为了让客户端发送一些数据和服务器能够读取它,我可以为此使用相同的套接字吗?还是我需要使用单独的插座?两个通过 TCP 通信的应用程序是否可以在同一个套接字上读写?

是的。 TCP 是全双工的。应用程序定义了客户端和服务器之间交换什么/如何消息的协议。天气他们异步或同步,TCP 不在乎。

【讨论】:

    【解决方案2】:

    tcp 中的客户端服务器范例是客户端发起连接,服务器侦听传入连接的范例。一旦建立了 tge 连接,就由 http 等更高层协议来确定数据的交换方式。就 tcp 而言,客户端和服务器都可以选择任何方式发送或接收数据。 Tcp 是全双工的。

    【讨论】:

      最近更新 更多