본문 바로가기
Tip&Skill

[TCP/IP] 윈도우소켓 서버만들기

by 하센세 2009. 3. 23.
#include     
#include     
    
#pragma comment(lib, "wsock32.lib")      
     
void main()      
{      
    SOCKET s, cs;      
    WSADATA wsaData;
	struct sockaddr_in sin;
	struct sockaddr_in cli_addr;
	int size = sizeof(cli_addr);
    
    
    if( WSAStartup(WINSOCK_VERSION, &wsaData) != 0 ){   
        printf("WSAStartup 실패, 에러코드 = %d\n", WSAGetLastError());   
        return;   
    }   
        
    s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);      
  
    if(s==INVALID_SOCKET){   
        printf("소켓 생성 실패, 에러코드 : %d\n", WSAGetLastError());   
        WSACleanup();   
        return;   
    }   
    
    sin.sin_family = AF_INET;   
	sin.sin_port = htons(10000);
	sin.sin_addr.s_addr = htonl(ADDR_ANY);
    
       
    bind(s, (struct sockaddr*)&sin, sizeof(sin));

	listen(s, SOMAXCONN);

	puts("클라이언트의 연결을 기다리고 있습니다...\n");

	cs = accept(s, (struct sockaddr*)&cli_addr, &size);

	if(cs == INVALID_SOCKET) {
		printf("소켓생성실패, 에러코드 : %d\n", WSAGetLastError());
		WSACleanup();
		return;
	}

	puts("클라이언트와 연결되었습니다...\n");

	   
    if(closesocket(s)!=0 || closesocket(cs)!=0){      
        printf("소켓 제거 실패, 에러코드 = %u\n", WSAGetLastError());   
        WSACleanup();      
        return;      
    }      
  
    
}