본문 바로가기
IT기술(코딩)/C, C++

window socket 10060 error 윈도우 소켓 타임아웃 에러.

by 크리에이트매이커 2024. 2. 14.
반응형

안녕하세요. 크리에이트메이커 입니다 !! createmaker!

 

리눅스 -> 윈도우 로 바꿔달라는 의뢰를 작업하던중...

소켓에서 문제가 발생하였는데요!!!

 

몇시간 헤매다 문서읽고 겨우 찾았습니다.

 

항상 느끼는 등신같은 chatGPT...

 

자. 혹시 다 했는데도 알수없는 이유로 계속 타임아웃 에러가 발생할때는 이걸 봐보세요.

 

        struct timeval timeout;
        timeout.tv_sec = 10;
        timeout.tv_usec = 0;

        int dwTimeout = 10000;

        setsockopt(m_iSock, SOL_SOCKET, SO_RCVTIMEO, reinterpret_cast<const char *>(&dwTimeout), sizeof(dwTimeout));

아마 리눅스, 유닉스 버전에서는,,

 

SO_RCVTIMEO 에 시간은 위 코드의 맨 위처럼

        struct timeval timeout;
        timeout.tv_sec = 10;
        timeout.tv_usec = 0;

이렇게 지정해 주고

 

etsockopt(m_iSock, SOL_SOCKET, SO_RCVTIMEO, reinterpret_cast<const char *>(&timeout), sizeof( timeout ));

 

아놔 무야.. 왜 이레.. 암튼.. 저렇게 timeout으로 시간을 줬을겁니다.뭐여왜 이렇게나와.. ㄷ.. 암튼.. 하지만 !! 윈도우에서는 소켓옵션을 할때 !! 저 timeval 구조체가 없습니다 ㅋㅋ...

 

그냥 int dwTimeout 처럼 int형 변수 하나 추가해서 밀리세컨드로 가정하고 숫자 넣고 위 제공한 코드처럼 넣어주면 됩니다.멍청한 chatGPT에 물어보고 구글링해서도 하다가 계속 안나와서 뭐 마이크로 어쩌구 문서 읽다보니, 저래 돼있어서 해봤는데 잘되네요 .. ㅋㅋ

 

그럼 즐거운 개발되세요 !

반응형