服务器向客户端发送数据自动中断
问题现象:
客户端接收服务器端数据出现假死现象。
环境描述:
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));
数据包中的现象:
服务器向客户端发送数据自动中断相关推荐
- Android简单实现Socket通信,客户端连接服务器后,服务器向客户端发送文字数据
案例实现的是简单的Socket通信,当客户端(Android客户端)连接到指定服务器以后,服务器向客户端发送一句话文字信息(你可以拓展其它的了) 先看一下服务端程序的实现吧 Server.java i ...
- C# SuperSocket 手把手教你入门 傻瓜教程---1(服务器单向接收客户端发送数据)
C# SuperSocket 手把手教你入门 傻瓜教程系列教程 C# SuperSocket 手把手教你入门 傻瓜教程---1(服务器单向接收客户端发送数据) C# SuperSocket 手把手教你 ...
- 易语言通过服务器发送文件,易语言服务器与客户端发送文件
易语言服务器与客户端发送文件 内容精选 换一换 PL/pgSQL是一种可载入的过程语言.用PL/pgSQL创建的函数可以被用在任何可以使用内建函数的地方.例如,可以创建复杂条件的计算函数并且后面用它们 ...
- 服务器主动发送fin信号,tcp 服务器向客户端发送FIN
tcp 服务器向客户端发送FIN 内容精选 换一换 ELB的常见异常返回码有400.403.502.504等.若遇到这些返回码建议您先直接访问后端云服务器,查看是否是后端云服务器的异常.若后端云服务器 ...
- 【Linux】socket网络编程之服务器与客户端的数据交互
[Linux]socket网络编程之服务器与客户端的数据交互 前言参考 argc !=2是什么意思 inet pton函数 对stdin,stdout 和STDOUT_FILENO,STDIN_FIL ...
- Java学习日记8:文件上传工具类的实现和服务器给客户端发送图片
文件上传的工具类: 每次文件上传要写很多东西,把这些封装成一个工具类,以后用起来就会方便很多. 先创建一个类存储上传文件的信息: package com.upload; /*** 每上传成功一个文件的 ...
- qt服务器和客户端发送消息,qt服务器和客户端发送数值
qt服务器和客户端发送数值 内容精选 换一换 PL/pgSQL是一种可载入的过程语言.用PL/pgSQL创建的函数可以被用在任何可以使用内建函数的地方.例如,可以创建复杂条件的计算函数并且后面用它们来 ...
- Rtthread学习笔记(二十)RT-Thread使用Esp8266,连接远端服务器IP端口发送数据
一.步骤 将RTThread移植到STM32上,添加esp8266,连接wifi,从而实现stm32与服务器通讯.其中STM32做客户端,在华为云服务器上开的网络调试助手(具有固定IP端口)做服务器, ...
- flex采用blazeds实现服务器向客户端推数据
前言: 有很多类似股票.外汇.期货等实时行情这种应用,客户端需要显示行情牌价等信息. 目前的作法是:客户端定时向服务器请求,无论数据是否有更新,都把数据发到客户端. 我们这里讲的一种技术不同以上这个做 ...
- python 消息 推送服务器,从客户端发送字符串消息到服务器Python
我无法运行我的代码,只要我将这些发送线添加到客户端和服务器中的recv行.我不知道什么是错的.没有他们,程序运行完美.我为了便于调试而粘贴了尽可能小的代码,因为如果没有这些代码,代码是完美的.从客户端 ...
最新文章
- java auth fail_com.jcraft.jsch.JSchException: Auth fail
- 王者服务器维护7月九号,腾讯手游王者荣耀7月9号9点半版本更新,备受期待的S20赛季它来了...
- C++——重载运算符和重载函数
- pip sintall pyspider 报错:ERROR: Command errored out with exit status 10
- 计算机网络教室任课教师登记表,多媒体教室工作计划
- js实现操作等待提示loading……
- 花书+吴恩达深度学习(十八)迁移学习和多任务学习
- android 内存分析工具_Android Camera内存问题剖析
- 使用php第三方包mpdf将网页装换成pdf文件【2】
- excel保存快捷键_这应该算是Windows电脑中最强的几组快捷键!
- 生鲜电商进入2.0时代,美团还有“后招”吗?
- matlab程序代码 伪码捕获_GNSS_SDR_a 实现北斗卫星的伪随机码产生和捕获跟踪,其中主函数为initial 。 matlab 262万源代码下载- www.pudn.com...
- 陈志行:计算机围棋程序手谈作者
- 黑马Pink老师H5CSS教程学习笔记
- 软件测试-测试类型分类
- iphone通用设置里显示UDID(tweak)
- 百度云破解不限速版(绿色免安装)
- (iphone铃声制作)i39 for mac破解版永久激活方法
- 使用 spacy 进行自然语言处理(一)
- 高潮再次来袭:马云,东哥两位电商大佬,强行助攻 996