求教SOCKET通信的极限速度

raynors 2018-04-15 10:52:53
最近在改良SOCKET通信模块,重构代码,主要参考了
https://blog.csdn.net/SQLDebug_Fan/article/details/17557341

IOCP 异步

上文使用了TCPCLIENT作为客户端协议,但我仍然是使用通用IOCP做客户端

加上自己的东西做文件传输测试,使用127.0.0.1 本机做测试,单线程,显示速度在80M/S(360网管显示),扩大应用层包大小可以进一步提升。

但是放在局域网里做测试(两台机器)。单线程速度8-10M/S。

我只测试了三个并行客户端,都是8M/S左右。合计20-30M/S。

请教前辈改进的方向。

是继续改进接收发送效率,还是朝着多线程方向走,还是就此打住(SOCKET本身极限)?
...全文
2276 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
raynors 2018-06-30
  • 打赏
  • 举报
回复
软件构造有缺陷,在改进了核心后,速度起来了。

mk_lucifer 2018-04-17
  • 打赏
  • 举报
回复
引用 2 楼 raynors 的回复:
千兆网卡。 8M是单线程。80M也是单线程,多线程应该不止这个数。 说实话我对这个速度不太满意,因为想做文件传输。 所以请教一下前辈所做的极限速度参考。
网速和线程无关的,通讯都是委托给驱动的,多少线程也是一个个排队来,想提高速度,就提高网速,你想太多了。。。
dai78 2018-04-16
  • 打赏
  • 举报
回复
单线程发送时,受限于每次传送的字节数及响应速度数据
xuzuning 2018-04-15
  • 打赏
  • 举报
回复
性能测试时,应有一个最底层次(比如直接使用 Socket 类型的)软件做参照系
xuzuning 2018-04-15
  • 打赏
  • 举报
回复
千兆网卡 应加一个数量级 显然你的代码存在严重的问题
raynors 2018-04-15
  • 打赏
  • 举报
回复
千兆网卡。 8M是单线程。80M也是单线程,多线程应该不止这个数。 说实话我对这个速度不太满意,因为想做文件传输。 所以请教一下前辈所做的极限速度参考。
xuzuning 2018-04-15
  • 打赏
  • 举报
回复
本机测试,不走网卡出口,80M/S 偏低了 局域网测试 8-10M/S 对于百兆网卡 正常 SOCKET 本身无限制,限制来自网络硬件
raynors 2018-04-15
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
性能测试时,应有一个最底层次(比如直接使用 Socket 类型的)软件做参照系
我是新手,求教一个
raynors 2018-04-15
  • 打赏
  • 举报
回复
我的问题就在这里了。那个博客作者的测试结果也看不懂,似乎跟我这结果差很远。 如果说代码存在严重问题,那么使用127.0.0.1 为什么能到80甚至100。理论上扔掉网卡就是这速度。(单线程) 如果说网卡限制了传输速度(不排除网线问题),为什么单线程只有8M,多线程可以突破到更高? 现在我就是被这些逻辑搞糊涂了, 我开三个线程,下载是可以到24M的。 瓶颈究竟在哪里呢?

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧