我有一个客户端连接到服务器并尝试send()
一些数据。但是,我需要发送两种类型的数据,例如有关天气和当前时间的信息(仅作为示例)。
问题是:在客户端中,我调用 send()
两次,一次发送天气信息,一次发送当前时间,而在服务器中,我调用正在循环 recv()
。
我期望的(并构建了我的代码)是服务器第一次调用 recv()
时它只会获取天气信息,而在第二次调用 recv() 时它只会获取天气信息
时间,但是只需调用一次 recv()
就足以在同一缓冲区上接收两个数据。
虽然这可能不是问题,但问题是我已经围绕这个假设构建了我的程序,我只是想知道是否有办法实现我想要的(我想到了 sleep()
在两个 send()
之间,但这可能不可靠),这样我就可以节省重写代码的时间。
如果有人知道一种方法,它将节省我相当多的时间,所以我很感谢任何帮助。
最佳答案
除了 TCP 之上的正确消息协议(protocol)之外,没有其他选择。 TCP 仅传输八位位组(字节)流。 TCP 无法传输消息、结构、对象。
如果您围绕 TCP 可以自行传输消息的假设构建了一个大型程序,那么您就有麻烦了。
Sleep() 和计时器 bodges 将无法以任何可靠或高性能的方式工作。您必须正确执行并在 TCP 之上实现协议(protocol),例如。通过发送包含数据长度的 header 或使用开始/结束字节并转义数据中出现的任一字节。
关于c - 使用send()两次发送不同类型的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10207844/