无私的好奇心......
在Java中,我在套接字上监听,积压为1:
ServerSocket ss = new ServerSocket(4000, 1);
在shell中我运行
netcat localhost 4000
多次 - 到目前为止5次。
永远不会拒绝连接。 netcat
的每个实例都在等待,直到我的ServerSocket被销毁。
积压长度为1 - 这意味着它应该只让一个传入连接排队,然后拒绝,不是吗? ((我不知道队列是否包含第一个 - 现在不重要。)
我知道我可以通过关闭ServerSocket(然后在我准备就绪时打开另一个)来完成这项工作,但是......不管怎样它还不能用?
我误解了吗?
答案 0 :(得分:1)
正如我上面引用的here所写,
此行为取决于平台。当待办事项填满时,Windows会发出RST,从而导致“拒绝连接”。 Unix,Linux只丢弃SYN数据包。
NB积压长度不是1.平台可以向上或向下调整。在早期的BSD版本中,历史上最小的最小积压长度为5。现在在某些平台上有五十甚至五百个。