我已经为服务器和客户端编写了基本套接字程序。我想知道如何使用java将数据从服务器传输到客户端,并且当服务器发送数据时,如果客户端缓冲区溢出服务器应该减少它发送速率(拥塞应该用tcp / ip中的ECN位表示).....谢谢你的帮助。
答案 0 :(得分:2)
ECN字段是IP和Transport layer的属性。因此,我认为您无法从普通应用程序中进行设置。一种方法是创建RAW Socket并使用TCP / IP头中设置的适当字段(在您的情况下为ECN)自己制作数据包。
您还应注意,所有路由器和参与的终端主机都必须具有ECN支持。否则,路由器可能只丢弃数据包或任意将ECN值设置为零。
Google能够找到一些带有原始套接字支持的Java库,你会发现here。
答案 1 :(得分:0)
您可以使用cmd命令启用或禁用ECN功能 - netsh interface tcp set global ecncapability = enabled
启用ECN功能时,TCP标头会自动设置ECN和CWR标志。
https://www.saotn.org/explicit-congestion-notification-ecn-slows-outbound-connections/