社区
网络编程
帖子详情
关于socket接收数据快,处理速度慢的问题
baiyingby
2006-11-10 08:04:54
用socket传数据,recv接收数据快,可是处理数据速度慢。在一个线程中,先接收数据,然后处理,再接收数据的化,会出现粘包的问题。如果分开两个线程的化,数据处理还是敢不上接收快,如何解决?
...全文
1137
8
打赏
收藏
关于socket接收数据快,处理速度慢的问题
用socket传数据,recv接收数据快,可是处理数据速度慢。在一个线程中,先接收数据,然后处理,再接收数据的化,会出现粘包的问题。如果分开两个线程的化,数据处理还是敢不上接收快,如何解决?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
baiyingby
2006-11-10
打赏
举报
回复
我也打算用两个线程,可否介绍一下队列如何同步
baojian88888
2006-11-10
打赏
举报
回复
可以参考 ACE_Message_Queue
DentistryDoctor
2006-11-10
打赏
举报
回复
粘包的问题无法避免。最好是有格式的包,有包头,这样就好区分了。
如果处理费时,一个线程接收数据,一个线程处理数据是推荐的方法,两个线程共享一个队列,注意同步。
ProgrameMan
2006-11-10
打赏
举报
回复
你看看吧
int nRead = 0, nLeft = 0, nBytes = 0;
nLeft = NUM_BYTES_REQUIRED; //要求读取的数据长度
while(NUM_BYTES_REQUIRED){
....................
nRead = recv(sock, &(buf[nBytes],nLeft,0);
....................
nLeft -= nRead;
nBytes += nRead;
}
ProgrameMan
2006-11-10
打赏
举报
回复
这样是不行的
baiyingby
2006-11-10
打赏
举报
回复
如何解决粘包问题,我认为尽量及时把传过来的数据接收,不让数据排队等待,就可以了。
ProgrameMan
2006-11-10
打赏
举报
回复
粘包在使用TCP通讯时是无法完全避免的,你需要自己分解粘在一起的数据
ProgrameMan
2006-11-10
打赏
举报
回复
个人理解:
这个问题不是单存让 处理数据快一些就可以完全避免的,要想治本还是要解决粘包的问题。
Socket
编程
快
速入门
本课程将理本课程将理啊 论结合实践,带你从零开始,系统学习
Socket
编程技术,让
Socket
的学习不再那么零散与难以掌握,同时会提炼出
Socket
网络传输的核心思想与构架,并带你踩坑出坑,增加你的分析与处理
问题
的啊aasa 能力,完善你的编程思想与知识体系。论结合实践,带你从零开始,系统学习
Socket
编程技术,让
Socket
的学习不再那么零散与难以掌握,同时会提炼出
Socket
网络传输的核心思想与构架,并带你踩坑出坑,增加你的分析与处理
问题
的能力,完善你的编程思想与知识体系。
socket
接收数据
的速度测试结果
最近工作上遇到一个
问题
,接收多播数据时经常出现丢包。网络情况良好,所以丢包实际是因为程序
处理速度
不够而导致的,当然,这种情况可以通过简单的增加
socket
的缓存大小来搞定。设置成一百多兆肯定不会丢(当然,要设这么大必须先改系统设置允许才行) 不过这没有解决程序
处理速度
不够
快
的
问题
,当时实现的时候把接收包和处理包都放在同一个线程里面。要解决这个丢包
问题
,除了增加缓存大小,也可以每次一接收到包
2
socket
循环
接收数据
socket
循环接收大数据 问
socket
异步
接收数据
2
socket
循环
接收数据
socket
循环接收大数据 问
socket
异步
接收数据
socket
接收数据
丢失
问题
。
接收UDP协议的网络数据,网络抓包工具能百分之百抓到,但是python写的
socket
会丢少数数据包。 每秒传输2600个800Byte的UDP数据包,传输10分钟左右,wireshark能够百分之百接收到数据,但是
socket
会出现数据的丢书。 原因 :
socket
默认缓冲区大小是65536,由于数据量过大,缓冲区挤满而导致数据的丢失。 receiver_
socket
=
socket
.
socket
(
socket
.AF_INET,
socket
.SOCK_DGRAM) #
socket
address =
2,
socket
循环
接收数据
:
socket
循环接收大数据,问:
socket
异步
接收数据
?
问:
socket
异步
接收数据
? 1、客户端发送给服务器的字节长度大于服务器接收默认的字节长度的话,服务器会... 答:客户端接收缓冲区设置多大就接收多大的数据包,当然发送端发送数据大于客户端缓冲区时,接收函数完成一次接收后会返回当前数据大小,你可以根据返回的做循环... 问:C#
socket
循环接收
socket
接收数据
如果对方没有返回 Recv。方法回阻塞线程而且会卡死
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章