소켓통신을 배우는 중입니다
하나의 pc에서 서버에서 클라이언트로 문자열을 보내는 간단한 코드를 작성하고 있는데요
쉬운 문제인것 같은데 안되는 이유를 모르겠어요
아래 코드가 서버 코드인데요 listen 함수까지는 정상 진행이 된것같은데 accept 함수까지 와서 다음으로 진행이 안됩니다.
프로그램은 멈춰서 먹통이 되구요
이유가 뭔지 모르겠어요 고수님들 도와주세요
char message[] = "Hello World!";
int szClntAddr;
char * addr = 제pc ip;
if(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
{
ShowMessage("Server WSAStartup Error");
return 0;
}
servSock = socket(PF_INET, SOCK_STREAM, 0);
if(servSock == INVALID_SOCKET)
{
ShowMessage("Server Socket Error");
return 0;
}
memset(&servAddr, 0, sizeof(servAddr));
servAddr.sin_family = AF_INET;
servAddr.sin_addr.s_addr = inet_addr(addr);
servAddr.sin_port = htons(8000);
if(bind(servSock, (SOCKADDR*)&servAddr, sizeof(servAddr)) == SOCKET_ERROR)
{
ShowMessage("Server Bind Error");
return 0;
}
if(listen(servSock, 5) == SOCKET_ERROR)
{
ShowMessage("Server Listen Error");
return 0;
}
szClntAddr = sizeof(clntAddr);
clntSock = accept(servSock, (SOCKADDR*)&clntAddr, &szClntAddr); // 이부분까지 와서 진행이 안되고 멈춰있습니다.
if(clntSock == INVALID_SOCKET)
{
ShowMessage("Server Accept Error");
return 0;
}
send(clntSock, message, sizeof(message), 0);
closesocket(servSock);
closesocket(clntSock);
WSACleanup();
return 1;
|