为什么socket接收大数据的时候接收不完全,出现丢包?

(1)TCP协议通信,接收方接收数据的前后次序与发送方一致,但数据包不一定一致。打个比方,发送方按顺序发送了2个数据包,接收可能仅接收1次就能全部收到,也可能需要收2次才能收到,也可能收3次,每次收到的数据大小不一定和发送方发送的数据包大小一样,但最终收到的总数据是一致的。

(2)从你的程序来看,客户端连续发送2包数据,服务器端有可能一次就全部接到,也可能分2次收到,也可能会收2次以上才能收到。如果在发送“########helloworld”和“######whatisit”之间增加一些延时语句,比如延时1秒,那么可以肯定服务器端只能收到1次,因为在发送第1包数据的时候,服务器端就接收到一次数据,而在发送第2包数据时,服务器已经不再有接收动作了。就现在的客户端程序来说,如果要在服务器端收到所有数据,可以考虑在服务器端循环接收数据,拼装数据,直到收不到数据为止,然后输出所有接收到的数据。

while(1)
{int rr;sock_fd = accept( sock, NULL, NULL);retval = 0;while(1){rr = recv( sock_fd, buf1, MAX_BUFLEN, 0 );if(rr==0) break;memcpy(buf+retval,buf1,rr);retval+=rr;}printf("buf= %s\n ##retval=%d\n",buf,retval);write(sock_fd,"get the call\n",sizeof("get the call\n")-1);
}

查到个函数ioctlsocket

while(1)
{int rr;sock_fd = accept( sock, NULL, NULL);retval = 0;int iMode = 1; //0:阻塞ioctlsocket(sock_fd,FIONBIO, (u_long FAR*) &iMode);//非阻塞设置while(1) { ....... }
........
}

为什么socket接收大数据的时候接收不完全,出现丢包?相关推荐

  1. 【python】-- Socket接收大数据

    Socket接收大数据 上一篇博客中的简单ssh实例,就是说当服务器发送至客户端的数据,大于客户端设置的数据,则就会把数据服务端发过来的数据剩余数据存在IO缓冲区中,这样就会造成我们想要获取数据的完整 ...

  2. 网络编程 - socket接收大数据

    通过socket,实现客户端发送命令,将服务端执行出的结果,反回到客户端,主要4个步骤: 1.服务端返回数据: 2.服务端返回数据的大小: 3.客户端接收返回数据的大小: 4.客户端按返回数据大小接收 ...

  3. 大数据----------------R语言下依赖库与依赖包的安装

    由于博主最近在学习大数据的基础,避免不了要搭建以hadoop,hbase,hive等软件为基础的环境,这一路的bug可谓是层出不穷啊!在历经万苦后终于将前面的都安装好了,顺利了一会儿,没想到在数据可视 ...

  4. Delphi---TServerSocket和TClientSocket发送和接收大数据包

    https://www.cnblogs.com/zhangzhifeng/p/6065244.html TServerSocket和TClientSocket用非阻塞模式发送和接收比较大的数据时,可能 ...

  5. simulink接收串口数据_基于Unity串口通信的解决方案

    思路有三种,等下我会详细介绍. 后面的博客详细介绍是我收录两年前写的博客,现在我已经没有往串口方向进行开发了,所以只能将一些思路分享给大家. ​ ​ 解决方式一:将Unity串口通信数据模块(接收与发 ...

  6. serialport接收串口数据_C#串口操作类,包括串口读写操作

    串口进行操作的类,其中包括写和读操作,类可设置串口参数.设置接收函数.打开串口资源.关闭串口资源,操作完成后,一定要关闭串口.接收串口数据事件.接收数据出错事件.获取当前全部串口.把字节型转换成十六进 ...

  7. C#实战027:socket实现大文件传输

    前面写了一个单文件传输的,后来发现当传送的文件大于设置的缓存空间时,文件就会出现丢包的现象,导致文件无法使用,所以为了适应大文件的传输,这里我将代码进行了下修改,实现大文件传输. 不过socket实现 ...

  8. 接地气,到底什么才是大数据开发工程师?

    最近发现有些同学并不太了解大数据开发工程师这个职位,自己转大数据开发也已经三年了,所以想简单介绍一下什么是大数据开发工程师,当前互联网公司的数据开发到底是什么样子的?和一般的java或者php工程师在 ...

  9. 高校应用型大数据人才该如何培养?

    伴随着全球数字经济的发展浪潮,产业结构不断优化升级,大数据与人工智能技术在行业应用逐步深入.整个社会已处在大融合.大交叉.大科学时代,各行业都在面临着挑战与变革. 大数据与人工智能已上升为国家战略,而 ...

最新文章

  1. UISearchBar和 UISearchDisplayController的使用
  2. 数学史上的哲学绝唱——无穷观与数学基础的争论
  3. OpenCV之objdetect 模块. 物体检测:级联分类器
  4. [学习笔记]状压dp
  5. 数据结构——用栈解决回文字符问题
  6. 基于mycat的mysql_基于Mycat中间件的MySQL读写分离
  7. 【Vue指令】—v-if、v-show二者用法及区别
  8. Java面试必问!Spring事务扩展机制(2)
  9. MAX脚本发送贴图的另外一个方式
  10. python学习系列:装饰器
  11. 企业如何培养新型员工队伍
  12. MyBatis3官方文档
  13. python实现基于selenium的天猫淘宝秒杀,支持定金商品,自动付款
  14. 使用iText读取PDF文件
  15. 全国青少年编程等级考试scratch二级真题2021年9月(含题库答题软件账号)
  16. excel行列突出显示_在Excel中突出显示即将到来的日期
  17. 七零年代摄影师Robert Mapplethorpe
  18. iPhone微信浏览器中默认弹框alert去掉域名显示
  19. 使用Diamond将宏基因组测序数据比对到Nr数据库
  20. 怎么把cad转成jpg高清图片?

热门文章

  1. .net中的SelectList在Html.DropdownList中的使用
  2. Python文件处理
  3. JavaScript中instanceof运算符的用法以及和typeof的区别
  4. 红旗桌面版本最新运用要领和成果解答100例-7
  5. Servlet架构初解析
  6. 一次性打开计算机任意程序的脚本(C语言)
  7. [ webpack4 ] 配置属于自己的打包系统教程(最终篇)—— 环境配置篇
  8. maven的启动类和MAVEN_OPTS参数
  9. 哈哈,netbeans5.5的Visual Web Pack终于出来了
  10. Linux系统下常见性能分析工具的使用