Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 套接字积压行为_Java_Sockets_Serversocket_Backlog - Fatal编程技术网

Java 套接字积压行为

Java 套接字积压行为,java,sockets,serversocket,backlog,Java,Sockets,Serversocket,Backlog,如果Serversocket的待办事项中有大量请求,并且正在执行长时间运行的作业,那么套接字的行为将是什么。 当我尝试此操作时,从windows telnet可以连接。但是从unix它得到“连接被拒绝”。 我的应用程序是用java编写的,运行在ibmjvm上。 顺便说一句,我们的应用程序没有从unix响应telnet。 不响应意味着它正在写“tyring…”并挂起,而不是拒绝或连接。有人能为这种行为辩护吗? 谢谢。如果套接字处于侦听状态,则不应出现“连接被拒绝”。在耗尽backlog设置提供的插

如果Serversocket的待办事项中有大量请求,并且正在执行长时间运行的作业,那么套接字的行为将是什么。 当我尝试此操作时,从windows telnet可以连接。但是从unix它得到“连接被拒绝”。 我的应用程序是用java编写的,运行在ibmjvm上。 顺便说一句,我们的应用程序没有从unix响应telnet。 不响应意味着它正在写“tyring…”并挂起,而不是拒绝或连接。有人能为这种行为辩护吗?
谢谢。

如果套接字处于侦听状态,则不应出现“连接被拒绝”。在耗尽backlog设置提供的插槽之前,您的连接请求应该得到确认(但不会发生更多情况)。当您达到
listen
系统调用设置的积压限制时,“Trying…”是正常行为(服务器丢弃数据包,直到侦听积压插槽可用,客户端重新传输SYN数据包,直到发生连接超时或服务器确认连接请求)。

首先感谢您的回答。当我尝试此操作时,套接字不在accept上(例如,它在accept下面的断点上)(backlog已达到限制),我拒绝了连接。当我使用netstat查看时,我看到我的端口处于侦听模式。我无法在我的机器上生成“正在尝试…”的情况,而我以前在生产中遇到问题时看到过这种情况。它不需要“处于接受状态”。要开始接收连接,只需要
bind
listen
。然后,每个传入连接都会被操作系统接受,并在backlog参数允许的范围内排队。当应用程序到达
accept
时,它将从队列中获取已接受的连接,一次一个。此行为取决于平台。当积压工作填满时,Windows会发出RST,这会导致“连接被拒绝”。Unix、Linux只需删除SYN数据包。