티스토리 뷰

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <WinSock2.h>
#include <iostream>
#pragma comment (lib , "ws2_32.lib")
 
void showError(const char * msg)
{
            std ::cout << "에러 : " << msg << std ::endl;
            exit (-1);
}
 
int main()
{
             WSADATA data;
             ::WSAStartup( MAKEWORD(22), &data);
 
             SOCKET server = socket (AF_INET , SOCK_STREAM, IPPROTO_TCP);
 
             if (server == INVALID_SOCKET )
                        showError ("서버 생성 실패" );
 
             sockaddr_in addr = { };
 
            addr.sin_family = AF_INET ;
            addr.sin_addr.s_addr = inet_addr ("127.0.0.1" );
            addr.sin_port = htons(23000);
 
             if (bind( server, (sockaddr *)&addr, sizeof(addr)) == SOCKET_ERROR )
                        showError ("바인딩 실패" );
 
             if (listen( server, SOMAXCONN) == SOCKET_ERROR)
                        showError ("듣기 실패" );
 
            std ::cout << "클라이언트를 기다립니다.." << std::endl;
 
             SOCKET client = accept (server, NULL, NULL);
            closesocket (client);
 
            closesocket (server);
             ::WSACleanup();
             return 0;+
}
 
cs

구동했을때 클라이언트를 기다립니다. 라는 메세지가 뜨고 프로그램이 대기중에 있으면 올바르게 구동된것이 맞다.
위 코드는 아주 기본적인 콘솔환경에서의 서버 구축 코드인데, 한줄한줄 설명하기에는 너무 힘들어서 이전에 작성된 게시글을 참고하거나, 개인적으로 혹은 댓글을 통해서 질문을 해주면 좋겠다.

간단하게 요약하자면, server라는 이름의 소켓을 TCP로 생성하고, 이 서버의 IP주소를 127.0.0.1 (이 주소를 로컬 호스트라고 한다.) 로 할당한뒤에, 포트번호를 23000으로 할당하고, bind, listen을 한다. 그리고 server로 연결되는 클라이언트를 client라는 이름의 소켓으로 생성한것. 이후에 동작은 아무것도 정하지 않았다. closesocket 이전에 자유롭게 소켓을 사용하면 된다.


이후에 설명 추가하겠음

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함