WSAGetLastError()이 반환하는 값들 중에서
잘못된 소켓기술자를 사용했을 경우 10038이 반환된다고 한다.
몇시간동안 대체 왜 에러가 나는지 삽질을 했는데 나의 경우 단순한 원인때문에 이러한 에러가 발생했다.
이유는 쓰레드를 생성한 함수가 리턴된 상태에서 쓰레드가 WSARecv(혹은 WSASend)함수를 호출했기 때문이었다.
그러니까
A라는 함수 안에서 쓰레드를 생성하고, 쓰레드안에서는 WSARecv랑 WSASend로 상대방과 데이터를 전송/수신 하
는데, 쓰레드를 생성한 A가 종료되어버리니까 쓰레드 안에서 함수를 호출할 때 문제가 발생한 것이었다
프로그램의 구조를 메인함수에서 쓰레드를 생성하도록 변경하니까 문제가 해결되었다.
'C > 공개글' 카테고리의 다른 글
시프트 연산자(shift operation) (0) | 2013.04.13 |
---|---|
왜 싱글포인터의 주소값은 더블포인터로 받아야 할까? (내생각) (0) | 2013.04.13 |
프롬프트창에서 실행 시 fopen 에러가 나는 이유? (0) | 2013.02.19 |
if(a==0) 와 if(0==a)의 차이? (0) | 2013.01.23 |
헤더파일의 디자인과 관련해서 주의할점 (0) | 2013.01.23 |