소켓 프로그래밍

카테고리 없음 2014. 2. 5. 07:12

소켓은 네트워크를 통한 입/출력을 하기 위해 사용자에게 필요수단을 제공하는 응용 프로토콜 인터페이스를 말합니다.

네트워크 입출력을 하기 위해서는 프로토콜, 소스 IP주소, 소스 포트 번호, 목적지 IP주소, 목적지 포트번호 총 5가지의

요소가 필요합니다.

 

C/C++에서 파일 입출력을 통해 파일을 open, read, write하는것과 동일한 방식으로 socket을 생성해 recv(받기),

send(보내기)등의 작업을 할수 있습니다.

 

소켓은 네트워크 인터페이스 층면에서 어플리케이션 층과 TCP/UDP층 사이에 소켓 인터페이스 계층이 존재하여

두 계층을 서로 연결해주는 다리 역활을 합니다.

윈도우 상에서의 소켓 프로그래밍은 윈도우에서 지원하는 Winsock을 사용하여 소켓프로그래밍을 작성합니다.

상당부분 BSD계열 유닉스 소켓을 참고로 설계되었기 때문에 많은 부분이 리눅스 기반 소켓과 유사합니다.

윈도우 소켓을 사용하려면

1. Winsock2.h 헤더파일을 포함합니다.

2. Ws2_32.lib 라이브러리를 링크합니다.

3. 윈도우 소켓 사용을 위한 라이브러리를 참조해 소켓생성, 전송, 수신 등을 사용해 소켓 통신을 합니다.

 

 

Ws2_32.lib 라이브러리를 링크할시,

와 같이 파일에 직접 추가하거나

프로젝트 속성 -> 구성 속성 -> 링커 -> 입력 -> 추가종속성 란에 아래 그림과 같이 입력해 주면 됩니다.

 

 

네트워크 프로그래밍에서는 여러 원인으로 인해 오류가 발생하고, 오류 발생 확률이 높기 때문에 오류처리코드를

작성해 각 오류에 대해 대응(예외)하는 부분이 필요합니다. 각각의 함수 리턴값을 이용하여 오류 목록을 확인하고

그에 대해 적절히 처리될수 있도록 작성되어야 합니다. 예)WSAStartup()

사용 예는 아래 사진과 같습니다.