首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

TCP传输大量数据丢掉

2013-08-16 
TCP传输大量数据丢失?写了一个客户端/服务器端程序,客户端向服务器端发送文件,客户端采用socket中send函数

TCP传输大量数据丢失?
  写了一个客户端/服务器端程序,客户端向服务器端发送文件,客户端采用socket中send函数发送数据,每次向send缓冲区发送1024*1024字节,服务器端采用完成端口接收数据。结果有很多数据丢失,tcp不是保证数据不会丢失吗?
  发送时用read函数从文件中读取1024*1024字节内容,然后直接发送,不断循环。像这样情况,tcp能保证数据传输可靠吗?能保证接收到数据的顺序就是发送的顺序吗?
[解决办法]
客户端send的时候先用阻塞模式,注意检查函数返回值,确认不是客户端的代码的问题先

[解决办法]
发送端给包加个索引号, 然后包头中加入发送数据的小大!

然后按照那个大小来接收!确保数据都能接收完成!
[解决办法]
你检查 send 的返回值了吗?
如果 send 返回错误, 这样的数据是不会发送出去的, 他们都没能放入发送的缓冲区.
[解决办法]
tcp的send和recv都是要检查返回值的
ret = send(sock, buff, 1024,0) 不能保证 ret的值一定等于1024,这种情况下,用while循环进行发送,直到ret累加=1024,才算发送完整。
recv也是同样的道理。都必须检查返回值并用while循环保证完整的接受。

[解决办法]
楼主代码BUG,我们以前也干过,传文件都没问题

热点排行