当前位置: 首页 > 知识库问答 >
问题:

当积压工作已满时,为什么不拒绝ServerSocket连接?

巫马劲
2023-03-14

无私的好奇心。。。

在Java我监听一个套接字,积压的1:

ServerSocket ss = new ServerSocket(4000, 1);

我在贝壳里奔跑

netcat localhost 4000

很多次-到目前为止5次。

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

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

我知道我可以通过关闭ServerSocket(然后在准备好的时候打开另一个)来实现这一点,但是……它无论如何都应该工作吗?

我误解了吗?

共有1个答案

郦祺
2023-03-14

正如我在这里写的,上面引用的,

这种行为取决于平台。当积压工作填满时,Windows会发出RST,这会导致“连接被拒绝”。Unix、Linux只需删除SYN数据包。

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

 类似资料:
  • 我创建了一个名为Hello-Lagom的示例Lagom项目,一切似乎都工作得很好。但是,当我尝试运行helloworld-impl项目时,首先启动服务定位器,然后运行项目,如下所示: 控制台显示服务定位器正在运行: 但是,在启动helloworld-impl服务时,Lagom抛出了一个拒绝连接的异常:

  • 我试图通过Jedis客户端连接到redis服务器,但在连接时我得到了以下异常和堆栈跟踪- redisconnectionFailureException:无法获得Jedis连接;嵌套异常是redis.clients.jedis.exceptions.jedisconnectionException:无法从位于org.springframework.data.redis.connection.jed

  • 我正在尝试使用docker容器运行ELK stack。但我得到的错误是,kibana无法与elasticsearch建立联系。 这是我的docker comp的内容 我日志的内容。形态 我有elasticsearch容器和kibana容器上的卷曲,对我来说很好 curl localhost:9200/_cat/index?漂亮的 增加虚拟内存大小后 root@sfbp19:~/docking je

  • 我正在尝试连接到本地SQL Server数据库。数据库名为MDB,这些是我使用的凭据。使用也尝试了,但没有成功。 我的库中有以下jar: 我使用的SQL server版本是2012。 我也尝试了localhost:1099,但没有成功。 java.sql.sqlexception:网络错误IOException:连接被拒绝:连接在net.sourceforge.jtds.jdbc.jtdsconn

  • 我看到了很多“java.net.ConnectException:Connection Relection”问题,但没有一个问题提到此错误的超时。我的问题是,我必须连接到一个服务器,在某些情况下,是阻塞的(由另一个软件连接到同一个端口)。所以,我正在做一个循环,用一些最大的重试来尝试连接: 我当前的代码(当然,依赖于我的软件的许多配置,但运行良好): null Linux: 2019-12-05

  • 不管我使用什么端口或主机,Net.CreateConnection似乎总是拒绝连接。我想是有什么东西阻碍了它的打开,但我不知道是什么原因造成的。 代码: 输出: