서버에 tcp 연결을 한 후 리눅스 응용 프로그램을 닫고 Socket.close()가 호출됩니다.TIME_WAIT의 tcp 연결은 재접속을 허용하지 않습니다.
netstat -pant를 확인하면 연결이 TIME_WAIT 상태 인 것으로 확인됩니다.
이렇게하면 동일한 포트를 사용하여 연결하기 때문에 서버에 즉시 연결할 수 없습니다. 대신, 다시 연결하기 전에 TIME_WAIT 상태의 시간 초과 연결을 기다려야합니다.
나는 set-so_timeout(), set_keepalive(), set_so_linger() 및 set_reuseaddr() 소켓 메쏘드를 가지고 놀지 않고 놀았습니다.이 스펠링의 정확한 철자법은이 게시물에서 올바르지 않을 수 있습니다.
내 질문은 어떻게 즉시 연결을 다시 만들 수 있도록 TIME_WAIT 상태에서 연결을 해제합니까?
알려 주시기 바랍니다.
감사합니다, jbu
예, 다른 포트가 문제를 해결하고 지금 사용합니다. 그러나 동일한 소스 포트를 사용하려는 경우 so_linger 메소드 설명이 작동하지 않는 것처럼 보입니다. 왜 그런지 모르겠습니다. – jbu
SO_LINGER는 권장하지 않습니다. 기껏해야 비 -BSD 플랫폼에 대한 지원은 산발적입니다. – paxdiablo
다른 연결 문자열을 사용하는 것이 우아한 해결책이라고 생각하지 않습니다. TCP/IP가 소켓에서 모든 것을 비우고 연결을 닫을 수있는 방법이 있어야합니다. –