读书人

网络编程怎么判断数据包是不是全的?

发布时间: 2012-04-28 11:49:53 作者: rapoo

网络编程如何判断数据包是不是全的??
利用tcp传输数据,
假设客户端向服务器发送1000个字节的字符串,那么如果遇到网络延迟导致前500数据先到,而后500个数据过了一会才到来,那么如何判断先来的500个字节不是全部的数据,(1000个字节只是举例,服务器不知道客户端传来多少字节)。
谢谢啦

[解决办法]
定义一个传输协议
先发一个包的长度 先读出长度 再根据长度解析 最好结尾再加个结束标志 我猜的
[解决办法]
不知道有多少前人掉在TCP Socket
send(人多)send(病少)send(财富)
recv(人多病)recv(少财富)
陷阱里面啊!

[解决办法]
收数据,循环拆包,收数据,循环拆包...............
[解决办法]
定义包头,包头中定义包体数据长度,
接收时先收包头(大小可固定),根据包体长度接收包体。
[解决办法]
由 通讯协议 来控制吧。

比如协议的报文头中,用几个长度字节来标识本包数据的长度。

如果想判断本包数据接收的是否正确,可以加校验。

读书人网 >C++

热点推荐