소켓 종료문제
글쓴이: junteken / 작성시간: 화, 2004/12/14 - 11:43오전
소켓 종료후 다시 binding을 할려고 하니 에러가 발생하네요
저는 UDP를 사용해서 구성하였는데요...
제가 만든 server-client모델에서 client가 자신이 binding해놓은 port로 항상 데이터가 오는지 감시를 하고 있게 해두었습니다.
그런데 만약 client에서 socket을 종료한뒤 다시 socket을
binding하려고 하니 binding에러가 납니다.
물론 socket descriptor를 close를 통해서 system에 반환
해주었습니다.
즉각적인 반환이 안되어서 그런건가요?
만약에 그렇다면 다음번에 binding할때는 다른 port로 binding
을 해야 하나요?
아니면 다른 방법이 있는지 고수님들의 빠른 답변 기다리겠습니다.
그럼 이만...
Forums:
음
포트를 열고 닫은 다음 다시 포트를 열려면
실패하는 경우가 종종 발생합니다.
좀 지난다음 열면 성공하더군요..
바인딩에 실패할경우 강제로 바인딩해주는 옵션이
있습니다. 한번 찾아서 해보세요.
http://wiki.kldp.org/wiki.php/BeeJNetwor
http://wiki.kldp.org/wiki.php/BeeJNetworkProgramming#s-8
이 부분을 말씀하시는건지 모르겠네요.
별은 바라보는 자에게 빛을 준다.
그때 netstat 으로 보면 해당 포트를TIME_WAIT 하고 있을
그때 netstat 으로 보면 해당 포트를
TIME_WAIT 하고 있을겁니다.
setsockopt (...) 의 네번째 인자를
SO_REUSEADDR 을 주면 해결됩니다.
##########################################################
넘어지는건 아직 괜찮다.
하지만 넘어질때마다 무언가를 주워서 일어나자.
Re: 음
45초가 기본값으로 알고 있습니다.
바로 사용하려면 위에 분이 알려주셨듯이 SO_REUSEADDR을 해주면 됩니다.
------------------------------
좋은 하루 되세요.
댓글 달기