티스토리 뷰
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(2, 2), &data); SOCKET client = socket (AF_INET , SOCK_STREAM, IPPROTO_TCP); if (client == INVALID_SOCKET ) showError ("클라이언트 생성 실패" ); sockaddr_in addr = { 0 }; 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를 사용하면 될 것.
'C,C++' 카테고리의 다른 글
C/C++ : 현재 날짜 구하기 (0) | 2016.06.09 |
---|---|
C/C++ : 콘솔 환경에서 텍스트 컬러 변경 (2) | 2016.06.09 |
C++ 소켓 프로그래밍 : 서버 기본 코드 (0) | 2016.05.31 |
C/C++ : 클래스(class) 생성자와 소멸자(Constructor & Destructor) (0) | 2016.04.12 |
C/C++ : 클래스(class)의 개념 (1) | 2016.04.11 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- UML
- 리눅스
- 스레드
- MFC
- 프로세스
- 소켓
- 데이터베이스
- C
- 클래스
- 정렬
- 라즈베리파이
- 소켓 프로그래밍
- 유즈케이스
- 안드로이드
- 자료구조
- 악보
- 티그널
- 파이썬
- 파일
- 클라이언트
- C++
- 터미널
- 디렉터리
- 쓰레드
- 액터
- 파이썬예제
- socket
- Sort
- C/C++
- 티라노 시그널
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함