社区
C++ 语言
帖子详情
socket recv 效率问题
mmidd
2011-06-24 01:13:43
问题:
测试多线程程序并发
socket recv阻塞模式接收数据时 正常情况只用不到1ms
个别情况却达到了几秒钟
怎么避免这种超时的现象
...全文
164
10
打赏
收藏
socket recv 效率问题
问题: 测试多线程程序并发 socket recv阻塞模式接收数据时 正常情况只用不到1ms 个别情况却达到了几秒钟 怎么避免这种超时的现象
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mmidd
2011-06-24
打赏
举报
回复
要求必须在一秒内收到数据并响应
超过1秒的都是超时,有超时是不允许的
网络状况很好
qq120848369
2011-06-24
打赏
举报
回复
什么叫超时....
网络状况不好?
qq120848369
2011-06-24
打赏
举报
回复
主控线程select监听套接字,监听套接字可读则accept获得一个连接套接字,并且分发一个线程里去send & recv .
线程里为了判断超时,可以select连接套接字阻塞2秒,超时了你想怎么处理再说...大不了关闭这个连接就可
以了.
mmidd
2011-06-24
打赏
举报
回复
每秒请求 100次 每次数据在 250字节左右
返回数据约在 500字节左右
mmidd
2011-06-24
打赏
举报
回复
现在是 有一个主控进程 select
当有socket连接 将这个 socket分配到一个线程
线程里对这个socket进行读写
问题是这边不允许有超时的情况,现在测试情况 看 个别socket recv数据时超过了2秒
怎么解决这样的超时问题呢?
我在发送数据端打了log发送数据没有超时
iambic
2011-06-24
打赏
举报
回复
测试问题。可能你发送的问题,或者你管理线程的代码有问题。另外不知道你并测试的发数和传输数据的大小,这个结果就没什么讨论的意义。
qq120848369
2011-06-24
打赏
举报
回复
可以将连接socket分发给一个进程或者线程去recv,利用select提供超时控制.
ljq550000
2011-06-24
打赏
举报
回复
为什么不使用非阻塞模式呢 如select 重叠模式等
mmidd
2011-06-24
打赏
举报
回复
是的
有个线程池 每个线程会分配一个socket进行操作
我测试的是 线程里的socket recv数据的时间
就想叫yoko
2011-06-24
打赏
举报
回复
你测试的是多个线程分别recv不同socket的数据 其间的间隔时间吗
Socket
的Send和
Recv
接收速率慢说明
1. 背景 在不同电脑的Windows系统中,使用同一个服务程序和客户端程序(TCP协议)进行测试,在部分电脑(win7)出现Send 和
Recv
大量数据,有时会出现Send和
Recv
一个数据包耗时1~2s的情况。 2. 原因 最终发现是不同的电脑带宽不一样,导致
Recv
的速率不一样,而对于TCP协议,若内核中的
Socket
Recv
缓冲区满,而数据没有及时被应用读取走,此时服务程序Send一个数据包的耗时就会加长(因为一直在重发数据包)。这种
问题
可以通过尝试修改内核中的
Socket
Recv
缓冲区大
linux
socket
recv
返回,Linux
socket
:如何使send()等待
recv
()
我正在使用TCP协议创建一个简单的客户端 – 服务器应用程序.我知道默认情况下.
recv
()将阻塞,直到另一方调用send()到此套接字.但是有可能send()阻塞自己,直到另一方已经
recv
()编辑了msg而不是将send()保持到传出队列,然后找到另一侧
recv
()得到了一大堆由多个发送的消息发送()■换一种说法.是否有可能让每个send()等待另一方的
recv
()才能调用另一个send()...
【
socket
】 read和
recv
区别、write和send区别
1.问chatGPT应用:
socket
read和
recv
区别? 2.问chatGPT应用:
socket
write和send区别?
Socket
的Send,
Recv
的长度
问题
Socket
的Send,
Recv
的长度
问题
【转】 一个包没有固定长度,以太网限制在46-1500字节,1500就是以太网的MTU,超过这个量,TCP会为IP数据报设置偏移量进行分片传输,现在一般可允许应用层设置8k(NTFS系统)的缓冲区,8k的数据由底层分片,而应用层看来只是一次发送。 windows的缓冲区经验值是4k
socket
的
recv
非常慢,为什么?
//获取用户信息 CString CMySock::GetMemberInfo(char requestUrl[],char Data[]) { char RequestData[1024]; strcpy(RequestData,Data); LPHOSTENT lphost= gethostbyname(requestUrl);
C++ 语言
64,648
社区成员
250,503
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章