connect()함수 질문.

leesort의 이미지

if(connect(g_socket, (struct sockaddr*)&g_serveraddr, sizeof(struct sockaddr)) == SOCKET_ERROR)
        return WSAGetLastError();

이런 코드가 있습니다. 연결하려는 서버가 실행이 되어있으면
connect가 바로 되는데,
서버가 죽어있을때는 connect에서 매우 오랜시간(20여초?)
멈추어있어서 프로세스가 죽은것처럼 보입니다.
이를 해결할 좋은 방법이 없을까요?
ps. windows에서 프로그래밍하고있습니다.

익명 사용자의 이미지

1. BSD variation( Windows/Linux/Unix)
* non blocking connect
- socket()->set nonblock(fcntl()) -> connect()
- with timeout

2. Windows Only.
* WSA* function
- for example: WSAAsyncSelect() etc.

leesort의 이미지

감사합니다.
덕분에 힌트를 찾아서,
ioctlsocket()와 select()로 원하는 사항을 구현했습니다.
:D


------------------------------------------
------------사진은 제가 아님----------------
------------------------------------------