问题
In case of a Serversocket have full of request in its backlog and doing a long running job what will be the socket behaviour. When I try this, from windows telnet is ok, it connects. But from unix it gets "connection refused". My application is written in java and running on IBM jvm. By the way I came to that point where our application was not responding telnet from unix. Not respoing means it was writing "tyring..." and hangs, not refusing or connecting. Can anybody justify this behavior? Thank you.
回答1:
You should not get "Connection refused", if the socket is in LISTEN state. Until you exhaust the slots provided by the backlog setting, your connect requests should be acknowledged (but nothing more happens). When you reach the backlog limit set by the listen
system call, "Trying..." is the normal behaviour (the server is dropping packets until a listening backlog slot is available, the client is retransmitting SYN packets until the connect timeout happens or the server acknowledges the connect request).
来源:https://stackoverflow.com/questions/20352743/socket-backlog-behaviour