티스토리 뷰

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
#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 client = socket (AF_INET , SOCK_STREAM, IPPROTO_TCP);
 
             if (client == 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 (connect( client, (sockaddr *)&addr, sizeof(addr)) == SOCKET_ERROR )
                        showError ("연결 실패" );
 
 
 
 
            closesocket (client);
             ::WSACleanup();
             return 0;
}
 
cs

서버보다 코드가 간결하다, 이유를 들자면 서버는 생성 이후에도 bind, listen, accept를 진행해야 하지만 클라이언트는 connect만 하면 끝이기 때문. 이전 게시글에 올려두었던 서버를 구동하면, 클라이언트를 기다리는 중입니다 라는 메세지를 출력하고 프로그램이 대기중일 것이다. 이때 클라이언트를 구동하면 별다른 출력없이 양쪽 프로그램이 둘다 종료된다. 왜냐하면 따로 주고받는 코드를 넣지 않았기 때문에.

send와 recv에 대해서는 다음에 추가하도록 하겠다. 급하게 사용하려면 closesocket 이전에 send나 recv를 사용하면 될 것.


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
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
글 보관함