服务器用tcp向客户端发送数据,程序运行时间改变??!

qq_41979203 2019-10-11 11:16:45
服务器与客户端采用tcp发送数据,数据比较大(640M),电脑第一次运行程序,服务器与客户端发送数据,8s结束(基本满足千兆网下的传输速率,服务器与客户端是两台主机)。关闭程序,第二次运行同样代码程序(为了排除端口没有释放的原因,换了端口号)15s传输结束。为什么呢?在服务器本机运行网络助手,网络助手去接收数据,时间也为8s。但在客户端主机运行网络调试助手(只接收数据没有对数据进行处理)时间15s。诡异无解,唉。
...全文
161 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_41979203 2019-10-12
  • 打赏
  • 举报
回复
引用 3 楼 kinkon007 的回复:
有些协议栈是会根据状态来调整这个窗口的大小的。你这个也是我的猜测,其实可以抓包来看下两种情况下的收发包的情况来分析分析,这样来分析问题更合理。
原来我是3000个字节一发,现在改成9000个字节一发,速度就稳定下来,一直为5s左右,再改大字节速度基本不变(差不多是极限了).现在基本上能满足快速传输了.
kinkon007 2019-10-12
  • 打赏
  • 举报
回复
有些协议栈是会根据状态来调整这个窗口的大小的。你这个也是我的猜测,其实可以抓包来看下两种情况下的收发包的情况来分析分析,这样来分析问题更合理。
kinkon007 2019-10-11
  • 打赏
  • 举报
回复
很可能是tcp协议栈调整了发送窗口的大小导致的
qq_41979203 2019-10-11
  • 打赏
  • 举报
回复
引用 1 楼 kinkon007 的回复:
很可能是tcp协议栈调整了发送窗口的大小导致的
恩恩速率变慢应该是这个原因,send太快需要等对方去recv,使缓存区有空间。只是奇怪为什么第一次运行和之后运行时间就不同了(一样的代码)。奇怪为什么在自己主机和别人主机的网络助手接收时间也是不同。不知道怎么去解决这个问题。

4,391

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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