有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么待办事项已满时服务器socket连接未被拒绝?

无私的好奇心

在Java中,我在一个socket上侦听,积压1:

ServerSocket ss = new ServerSocket(4000, 1);

我在贝壳里奔跑

netcat localhost 4000

到目前为止已经有5次了

连接从不被拒绝。netcat的每个实例都在等待,直到我的ServerSocket被销毁

Backlog长度是1-这意味着它应该只让一个传入连接排队,然后拒绝,不是吗?((我不知道队列是否包括第一个队列-现在不重要。)

我知道我可以通过关闭ServerSocket(准备好后再打开另一个)来实现这一点,但是。。。不管怎样,它不应该工作吗

我误解了吗


共 (1) 个答案

  1. # 1 楼答案

    正如我在上面引用的here中所写

    This behaviour is platform-dependent. Windows issues an RST when the backlog fills up, which results in 'connection refused'. Unix, Linux just drop the SYN packet.

    NB待办事项长度不是1。平台可以上下调整。在早期的BSD版本中,历史上最小的待办事项长度是5。在某些平台上,它现在是50甚至500