|
소켓통신을 하는데 해당 Ip가 없거나 잘못설정이 되 있을때 Connect를 하는데 1개당 20초 정도 걸립니다.
Connect 하는데 시간을 설정할수 있나요? 1초정도 연결이 안되면 강제적으로 다음으로 넘어가게
할려고 하거든요.
어느 소스를 보니까 WSAAsyncSelect를 이용한것이 있어서 아래처럼 해보니까 IP가 잘못되어 있어도
무조건 Connect 된것으로 표시가 됩니다.
아시는분 자세하게 부탁드립니다.
cli[n]는 stClient 구조체의 객체입니다. [n = 0 ~ 99]
int cSockUtil::connect_sock(char *szipaddr, int nport, int n) // nport는 소켓포트
{
int nret;
char m_szDebugBuf[1024];
cli[n].cli_sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
cli[n].cli_addr.sin_family = AF_INET;
cli[n].cli_addr.sin_addr.s_addr = inet_addr(szipaddr);
cli[n].cli_addr.sin_port = htons(nport);
nret = WSAAsyncSelect(cli[n].cli_sock, frmMain->Handle, NULL, FD_CONNECT);
if(nret == SOCKET_ERROR)
return -1;
if((nret = connect(cli[n].cli_sock, (LPSOCKADDR)&cli[n].cli_addr, sizeof(cli[n].cli_addr))) ==
SOCKET_ERROR )
{
if((nret = WSAGetLastError()) == WSAEWOULDBLOCK)
{
sprintf(m_szDebugBuf, "Connection From: %s", inet_ntoa(cli[n].cli_addr.sin_addr));
ShowMessage(m_szDebugBuf);
}
else
return -1;
}
return cli[n].cli_sock;
}
|