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

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

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

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

不知道说清楚了没有?

关键是怎么让他同步

如何在Socks服务器收到数据但还没有成功传输到目标的时候使客户端慢下来
...全文
13 点赞 收藏 8
写回复
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的限速有可能是形式上的
回复 点赞
发动态
发帖子
网络通信/分布式开发
创建于2007-08-02

924

社区成员

3.3w+

社区内容

Delphi 网络通信/分布式开发
社区公告
暂无公告