【发布时间】:2013-05-30 20:38:27
【问题描述】:
我的任务是编写一个客户端数据下载系统(在 Linux 上),该系统使用 FTP 或 HTTP 将 TB 大小的数据从外部合作伙伴下载到我们的本地站点。我们公司的网络管理员告诉我,我不能超过一定的带宽。我实施这样一个系统的最佳方式是什么?是否存在现有库?
我愿意编写自己的 FTP 和 HTTP 客户端(在 Linux 上使用 C 或 Java),但更愿意远离内核。我知道我可以限制我的 FTP/HTTP 客户端调用套接字 read() 的速率,但是如果服务器端调用 write() 的速度快于我的限制会发生什么?
【问题讨论】:
-
只要您使用 TCP/IP,服务器发送的东西就不会比您想象的要快。客户端必须先确认一个数据包,然后服务器才能发送另一个数据包。
-
谢谢。我忘记了 TCP 的流量控制,所以回答了那部分。但我仍在寻找实现整体节流的最佳方法。
-
读点东西,用数据包大小计算睡眠时间,再读一遍是我的头等大事。
标签: java sockets network-programming bandwidth