Java SIP 클라이언트 내의 소켓에 몇 가지 문제가 있습니다. 주소와 포트에 바인딩 할 때 문제가 발생하면 다시 연결을 시도해야합니다. 일반적으로 프로세스를 중지했다가 다시 시작한 후입니다. 문제는 포트가 바인딩되어 있고 로컬 포트를 증가시켜야한다는 것입니다.Java : 소켓 바인딩을 지우는 방법
바인딩하기 전에 대상 포트에서 바인딩을 제거하려면 어떻게합니까?
그럴 수 없다면 소켓 바인딩을 찾아 수동으로 닫을 수 있도록 프로세스가 끝나기 전에 어떻게 처리 할 수 있습니까?
@ Jason - Jason,하지만이 경우에는 클라이언트를 작성 중이며 서버에 대한 액세스 권한이 없습니다. 참조하고있는 포트가 클라이언트에 있으며 로컬입니다. 연결을 시도하기 전에 포트 바인딩을 플러시 할 수 있습니까? 프로세스 인터럽트를 잡아낼 수있는 방법이 없다면, perl처럼 'die'신호를 잡아서 어떤 포스트 프로세싱을하는 방법이있다. 자바는 이것을 가지고 있는가? 그렇다면 소켓 연결에서 close()를 호출 할 수 있습니다.
매우 흥미 롭습니다. 두 자바 서버처럼 _same_ 포트에 바인딩하는 것 자바 소켓과 함께 몇 가지 물건을 봤어요! 원더 경우 관련. – Justin
Jason,하지만이 경우에는 클라이언트를 작성 중이며 서버에 액세스 할 수 없습니다. 참조하고있는 포트는 클라이언트에 있으며 로컬입니다. 연결을 시도하기 전에 포트 바인딩을 플러시 할 수 있습니까? 프로세스 인터럽트를 잡아낼 수있는 방법이 없다면, perl처럼 'die'신호를 잡아서 어떤 포스트 프로세싱을하는 방법이있다. 자바는 이것을 가지고 있는가? 그렇다면 소켓 연결에서 close()를 호출 할 수 있습니다. –
그래도 작동합니다. 일반적으로 연결을 만들 때 원래 포트는 별 문제가되지 않습니다 (방화벽에서 구멍 펀칭으로 작업하고 있습니까?)하지만 일단 소켓이 생성되면 TCP-IP 스택은 상관 없습니다 누가 요청을 시작 했습니까? 당신이하지 않는다고 말하지 않는 한 당신의 커널은 당신이 끝냈다 고 생각하는 연결을위한 패킷을 여전히 잡을 것이다. – Jason