问题现象:

客户端接收服务器端数据出现假死现象。

环境描述:

1.      客户端是window程序

2.      服务器端是Linux程序

3.      服务器端程序和客户端程序采用TCP进行通讯

问题分析:

1.      首先,客户端上进行抓包,对其数据包进行分析,发现服务器端发送的数据总是不完全

2.      其次,服务器上进行抓包,发现发送一会儿后,发送端的TCP窗口满了,导致数据溢出,发送的数据都是错误的数据包

3.      从服务器上的数据包分析发现,由于客户端处理速度过慢引起

解决问题的方法:

1.      提高客户端接收数据的速度,接收数据和处理数据进行异步处理。接收数据单独一个线程/进程,将接收到的数据直接进行分发到数据处理目标线程/进程;即,消息泵机制

2.      增加客户端接收数据的缓冲区

3.      增加服务器端发送数据的缓冲区

缓冲区设置:

//接收缓冲区

int nRecvBuf = 2<<20;  //设置为2M
setsockopt(s, SOL_SOCKET, SO_RCVBUF, (constchar*)&nRecvBuf, sizeof(int));
//发送缓冲区
int nSendBuf=2<<20; //设置为2M
setsockopt(s, SOL_SOCKET, SO_SNDBUF, (constchar*)&nSendBuf, sizeof(int));

数据包中的现象:

服务器向客户端发送数据自动中断相关推荐

  1. Android简单实现Socket通信,客户端连接服务器后,服务器向客户端发送文字数据

    案例实现的是简单的Socket通信,当客户端(Android客户端)连接到指定服务器以后,服务器向客户端发送一句话文字信息(你可以拓展其它的了) 先看一下服务端程序的实现吧 Server.java i ...

  2. C# SuperSocket 手把手教你入门 傻瓜教程---1(服务器单向接收客户端发送数据)

    C# SuperSocket 手把手教你入门 傻瓜教程系列教程 C# SuperSocket 手把手教你入门 傻瓜教程---1(服务器单向接收客户端发送数据) C# SuperSocket 手把手教你 ...

  3. 易语言通过服务器发送文件,易语言服务器与客户端发送文件

    易语言服务器与客户端发送文件 内容精选 换一换 PL/pgSQL是一种可载入的过程语言.用PL/pgSQL创建的函数可以被用在任何可以使用内建函数的地方.例如,可以创建复杂条件的计算函数并且后面用它们 ...

  4. 服务器主动发送fin信号,tcp 服务器向客户端发送FIN

    tcp 服务器向客户端发送FIN 内容精选 换一换 ELB的常见异常返回码有400.403.502.504等.若遇到这些返回码建议您先直接访问后端云服务器,查看是否是后端云服务器的异常.若后端云服务器 ...

  5. 【Linux】socket网络编程之服务器与客户端的数据交互

    [Linux]socket网络编程之服务器与客户端的数据交互 前言参考 argc !=2是什么意思 inet pton函数 对stdin,stdout 和STDOUT_FILENO,STDIN_FIL ...

  6. Java学习日记8:文件上传工具类的实现和服务器给客户端发送图片

    文件上传的工具类: 每次文件上传要写很多东西,把这些封装成一个工具类,以后用起来就会方便很多. 先创建一个类存储上传文件的信息: package com.upload; /*** 每上传成功一个文件的 ...

  7. qt服务器和客户端发送消息,qt服务器和客户端发送数值

    qt服务器和客户端发送数值 内容精选 换一换 PL/pgSQL是一种可载入的过程语言.用PL/pgSQL创建的函数可以被用在任何可以使用内建函数的地方.例如,可以创建复杂条件的计算函数并且后面用它们来 ...

  8. Rtthread学习笔记(二十)RT-Thread使用Esp8266,连接远端服务器IP端口发送数据

    一.步骤 将RTThread移植到STM32上,添加esp8266,连接wifi,从而实现stm32与服务器通讯.其中STM32做客户端,在华为云服务器上开的网络调试助手(具有固定IP端口)做服务器, ...

  9. flex采用blazeds实现服务器向客户端推数据

    前言: 有很多类似股票.外汇.期货等实时行情这种应用,客户端需要显示行情牌价等信息. 目前的作法是:客户端定时向服务器请求,无论数据是否有更新,都把数据发到客户端. 我们这里讲的一种技术不同以上这个做 ...

  10. python 消息 推送服务器,从客户端发送字符串消息到服务器Python

    我无法运行我的代码,只要我将这些发送线添加到客户端和服务器中的recv行.我不知道什么是错的.没有他们,程序运行完美.我为了便于调试而粘贴了尽可能小的代码,因为如果没有这些代码,代码是完美的.从客户端 ...

最新文章

  1. java auth fail_com.jcraft.jsch.JSchException: Auth fail
  2. 王者服务器维护7月九号,腾讯手游王者荣耀7月9号9点半版本更新,备受期待的S20赛季它来了...
  3. C++——重载运算符和重载函数
  4. pip sintall pyspider 报错:ERROR: Command errored out with exit status 10
  5. 计算机网络教室任课教师登记表,多媒体教室工作计划
  6. js实现操作等待提示loading……
  7. 花书+吴恩达深度学习(十八)迁移学习和多任务学习
  8. android 内存分析工具_Android Camera内存问题剖析
  9. 使用php第三方包mpdf将网页装换成pdf文件【2】
  10. excel保存快捷键_这应该算是Windows电脑中最强的几组快捷键!
  11. 生鲜电商进入2.0时代,美团还有“后招”吗?
  12. matlab程序代码 伪码捕获_GNSS_SDR_a 实现北斗卫星的伪随机码产生和捕获跟踪,其中主函数为initial 。 matlab 262万源代码下载- www.pudn.com...
  13. 陈志行:计算机围棋程序手谈作者
  14. 黑马Pink老师H5CSS教程学习笔记
  15. 软件测试-测试类型分类
  16. iphone通用设置里显示UDID(tweak)
  17. 百度云破解不限速版(绿色免安装)
  18. (iphone铃声制作)i39 for mac破解版永久激活方法
  19. 使用 spacy 进行自然语言处理(一)
  20. 高潮再次来袭:马云,东哥两位电商大佬,强行助攻 996

热门文章

  1. 如何删除动态数组的指定元素 - 回复 Splendour 的部分问题
  2. C#基础概念面试题(更新中)
  3. 【转】HTML标签大全
  4. centos7 安装mysql_第02期:ClickHouse 单机部署以及从 MySQL 增量同步数据
  5. 网络编程 - 实现文件传送
  6. 【码云周刊第 8 期】面试之前,或许该高效率地学点干货了!
  7. css 3 制作水波状进度条
  8. Linux基础培训笔记二
  9. CI框架 -- 核心文件 之 Loader.php(加载器)
  10. 简述RHEL7新特性(二)