用winsock的send和recv函数写文件传输程序为什么会丢包? 文件传输mfctcp 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个不是丢包,是粘包问题。调用一次send不一定能将你的整个结构体发过去,也就是发送的实际字节数可能比ARRAY_LENGTH小,同样调用一次recv不一定能完整接受一个结构体,实际接受字节数可能比ARRAY_LENGTH小。应当检查send和recv的返回值,以确认整个结构体是否完全发送或完全接受。 我大致发现以下问题:1、你发送的数据长度是ARRAY_LENGTH+1,而你接收的数据长度ARRAY_LENGTH,会导致你的数据错乱。2、send函数没有对返回值进行处理,你并不知道send是否成功,到底发送了多少长度的数据出去。3、recv函数也没有对返回值进行处理,你也不知道到底接受了多少长度的数据,recv是否成功。4、TCP是存在丢包的可能性的,所以你需要让接收端返回确认包。你的丢包是因为你不知道这笔数据是否发送成功,你处理好返回值和确认包的问题,你的程序就比较稳定了。 如果是非阻塞,send函数和recv函数需要对返回值进行处理,如果是阻塞,不需要对函数返回值进行处理吧 如果是非阻塞,send函数和recv函数需要对返回值进行处理,如果是阻塞,不需要对函数返回值进行处理吧也是有可能出错的,你最好是处理返回值。 VC 向web post数据 有没有人比较了解类似于QQ聊天软件那样的通信方法 VC6界面 和 VS2008界面 CObList中访问子对象的问题 多线程网络编程的问题 怎么才能让你指定的行,颜色反转 创建DLL不生成LIB文件的问题 新手提问(关于delete),谢谢! 关于线程CPU的问题 郁闷,学好编程还要学好英语,各位提高听力有什么好方法?散分~ GDI+建立字体的时候,一定要用Unicode字符吗? 新手碰到头疼的LNK2001
调用一次send不一定能将你的整个结构体发过去,也就是发送的实际字节数可能比ARRAY_LENGTH小,同样调用一次recv不一定能完整接受一个结构体,实际接受字节数可能比ARRAY_LENGTH小。
应当检查send和recv的返回值,以确认整个结构体是否完全发送或完全接受。
1、你发送的数据长度是ARRAY_LENGTH+1,而你接收的数据长度ARRAY_LENGTH,会导致你的数据错乱。
2、send函数没有对返回值进行处理,你并不知道send是否成功,到底发送了多少长度的数据出去。
3、recv函数也没有对返回值进行处理,你也不知道到底接受了多少长度的数据,recv是否成功。
4、TCP是存在丢包的可能性的,所以你需要让接收端返回确认包。你的丢包是因为你不知道这笔数据是否发送成功,你处理好返回值和确认包的问题,你的程序就比较稳定了。
如果是非阻塞,send函数和recv函数需要对返回值进行处理,如果是阻塞,不需要对函数返回值进行处理吧
如果是非阻塞,send函数和recv函数需要对返回值进行处理,如果是阻塞,不需要对函数返回值进行处理吧
也是有可能出错的,你最好是处理返回值。