读书人

请教使用TCP的send和recv时速度不匹

发布时间: 2012-05-09 12:13:59 作者: rapoo

请问使用TCP的send和recv时,速度不匹配该怎么解决?
新人刚刚接触网络,写了一个极其简单的socket程序,就是TCP的一个服务端和客户端。当服务端和客户端都遵循写一条---读一条---写一条---读一条的时候没有问题,而当服务端只负责读,而客户端只负责写的时候,很容易产生服务端一次性读出n条写入的数据的情况。我试了一下,在客户端每写入一条数据后加入Sleep(500)可以解决这个问题,不过如果不人为的产生延迟的话,有什么办法解决这样的问题呢?难道把'\0'也一起传递然后在服务器端分割吗?
其实这个问题有点类似赵先生刚刚跟我说的一个陷阱:
send(人多)send(病少)send(财富)
recv(人多病)recv(少财富)
求指点!

[解决办法]
这个你可以发个结构体,加上数据头和数据尾~~作为判断一次发送的数据~~
[解决办法]
send(人多)send(病少)send(财富)
recv(人多病)recv(少财富)

TCP可靠字节流, 1次read+N次拆包。
[解决办法]
传输字节流,双方要约定帧结构。帧结构中包括同步头,数量长度,数据类型,这样接收端才会知道什么时候是一个新帧,什么时候收完了一个完整的帧,可以多这个完整的帧进行解帧处理了

读书人网 >C++

热点推荐