关于网络数据传输,如何使一个线程暂停传输数据?suspend?或者说限速。

rustle 2003-01-16 09:41:38
作一个Socks5 proxy
在TServerWinSocket基础上编程,使用Non_blocking模式
基本已经完成
能稳定工作
但是现在发现一个问题
就是Client - Server速度比Server - Dest快时
客户端数据可能已经发送完毕
但此时Server端还在向Dest目标主机发送数据

这个速度差别可能会很大
导致速度快的那一端看到的传输情况比实际要好得多。

这在FTP传输中影响很显著
客户端上传数据速度很快
传完关闭连接
而目标主机只收到一部分。

不知道说清楚了没有?

关键是怎么让他同步

如何在Socks服务器收到数据但还没有成功传输到目标的时候使客户端慢下来
...全文
58 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
rustle 2003-01-17
  • 打赏
  • 举报
回复
确实是这样的

但是TCP/IP已经解决了他

那是不是是说我要是不想发这个反馈信息给客户端就是不能利用已有Winsock来做?

或者有别的方法?

控制一下客户端发送过来的速度?

有软件做到这一点的

leechFtp,FlashGet都可以限速

它们作为在现有协议基础上开发的软件
而且服务端也不受它的控制
是怎么做到这一点的呢?
rustle 2003-01-17
  • 打赏
  • 举报
回复
不接收就可以了

原来这么简单
idilent 2003-01-17
  • 打赏
  • 举报
回复
我看计算机网络时看到这个问题,但是网络协议应该已经把它解决了,他说的解决方法是把要传递的流分成几段,当receive接收到时返回给sender一个信息,然后sender在发送新的。这不是最好的解决办法,但是我只记住了这个。看看相关的书,我估计能找到。
rustle 2003-01-17
  • 打赏
  • 举报
回复
up
rustle 2003-01-17
  • 打赏
  • 举报
回复
up
rustle 2003-01-17
  • 打赏
  • 举报
回复
Flashget不应该是形式上的限速

因为如果在局域网内FlashGet限速明显可以看出网络状况好转
warton 2003-01-17
  • 打赏
  • 举报
回复
把buffer设小一点不知道行不行
warton 2003-01-17
  • 打赏
  • 举报
回复
这个问题有点难,关注!!

我想flashget的限速有可能是形式上的

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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