소켓 통신을 할 때, 서버가 클라이언트보다 먼저 종료되었을 때....도와주세요 ㅠㅠ
글쓴이: na94ojt / 작성시간: 금, 2014/08/29 - 7:53오전
소켓 통신을 할 때, 서버가 클라이언트보다 먼저 종료되었을 때 클라이언트는 여전히 종료되지 않은 상태에서
서버를 재실행 하면 accept 할 때 Invalid argument error가 발생합니다. accept() 함수를 사용할 때 주소구조체의 크기변수도 초기화 잘 되있구요.
서버가 종료될 때 종료시그널이 오면 소켓 전부 닫고 종료하도록 해놓았습니다.
소켓 재사용 옵션도 사용해봤구요. 위에 내용들은 서버소켓뿐만이 아니라 클라이언트 소켓도 포함되는 것입니다.
아 그리고 서버가 종료되고 클라이언트가 실행중일 때 서버가 종료된지 약 1분 후에는 정상적으로 서버가 잘 실행되더라구요.
그래도 서버를 종료되자마자 바로 실행하고 싶은데 뭐 방법이 없을까요?
도와주세요 ㅠㅠ
Forums:
혹시 bind, listen 함수에서 에러가 나지는 않는지요?
혹시 에러값 체크를 하지 않고 계시다면, 에러값을 한번 체크해 보시기 바랍니다.
accept에러 맞아요 ㅠㅠ
함슈에서 invalid 에러가 뜹니다
accept()에서 invalid argument
accept()에서 invalid argument 에러가 발생했다면 fd가 잘못되었다는 것이므로, 결국, accept()에 전달된 socket이 문제일 것 같네요. accept()전 socket 관련 함수들 에러 여부를 검사하기 바랍니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
accept()에서만 에러떠요
Accept()에서만 에러뜨는거 맞구요
원래는 정상적으로 실행되는데 위 글에 내용과 같은 조건일때에만 그래요 ㅠㅠ
댓글 달기