winsocket을 이용한 TCP/IP 프로그램 구현의 문제점 제발......
Reg. Date: February 08, 2001 By 김명철
void SvrLinkConnect(char *serverName, unsigned int portNo){
WORD VRequested = MAKEWORD(1,1);
WSADATA wsadata;
int nError;
nError = WSAStartup(VRequested, &wsadata);
if(nError != 0){
printf("윈속 초기화 실패n");
return 0;
}
gvm_socket = socket(AF_INET,SOCK_STREAM, 0);
if(gvm_socket == INVALID_SOCKET)
{
perror("socket");
return;
}
if(WSAAsyncSelect(gvm_socket, H_hwnd, WM_ASYNC,FD_CONNECT|FD_WRITE|FD_READ|FD_CLOSE) == SOCKET_ERROR)
{
printf("하하하하하핳하하하하ㅏ하하n");
closesocket(gvm_socket);
WSACleanup();
return;
}
_addr.sin_family = AF_INET;
_addr.sin_port = htons(portNo);
_addr.sin_addr.s_addr = inet_addr(serverName);
bzero(&(_addr.sin_zero), 8);
if (connect(gvm_socket, (struct sockaddr *)&_addr, sizeof(struct sockaddr)) == SOCKET_ERROR)
{
perror("connect error");
return;
}
}
소스는 이렇습니다.
그러나깐 cygwin컴파일러를 이용하여 winsocket을 가지고 TCP/IP로 접속하는
프로그램을 짤려고 합니다.
그런데, connect할때 제대로 하지 못하고 에러를 발생시킵니다.
문제는 위의 소스중에 WSAAsyncSelect()함수가 있는데 이것을 삭제하면 connect()함수가 제대로 작동해서 connecting이 되는데 WSAAsyncSelect()함수가 들어가면 connect에러가 발생합니다.
위 함수를 사용하는데 저는 도저히 해결할수가 없어서 이렇게 글을 올립니다.
고수님들의 답변 부탁 드리겠습니다.