0

我有一个连接到服务器并尝试访问send()一些数据的客户端。但是,我需要发送两种类型的数据,比如说关于天气和当前时间的信息(只是示例)。

问题是:在客户端中我调用send()了两次,一次发送天气信息,一次发送当前时间,而在服务器中我正在循环recv()

我所期望的(并构建了我的代码)是服务器第一次调用recv()它只会获取天气信息和第二次调用recv()时间,但是只有一次调用recv()就足以接收到两个数据同一个缓冲区。

虽然这可能不是问题,但我已经围绕这个假设构建了我的程序,我只是想知道是否有办法实现我想要的(我想到了sleep()两者之间的一个,send()但这可能不可靠) ,这样我就可以节省重写代码的时间。

如果有人知道一种方法,它将为我节省很多时间,所以我很感激任何帮助。

4

1 回答 1

0

除了 TCP 之上的适当消息协议之外,别无选择。TCP 只传输八位字节流(字节)。TCP 不能传输消息、结构、对象。

如果您围绕 TCP 可以自行传输消息的假设构建了一个大型程序,那么您就有麻烦了。

Sleep() 和计时器不会以任何可靠或高性能的方式工作。您必须正确执行并在 TCP 之上实现协议,例如。通过发送包含数据长度的标头或使用开始/结束字节并转义出现在数据中的任一字节。

于 2012-04-18T10:57:20.147 回答