Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

음 어쩌다보니 윈도우 네트워크 프로그래밍도 좀 다루어야 할 일이 생겨서, winsock에 대해서 알아보기로 했다.

winsock

Winsock은 Windows Sockets API의 줄임말이라고 한다. TCP(:12)/ IP(:12)기반의 네트워크 서비스 프로그램을 개발하기 위한 라이브러리의 모음으로 TCP/IP 기반의 애플리케이션을 만들기 위한 표준함수들이 정의되어 있다. socket api" Berkely socket API를 기반으로 하고 있기 때문에, 프로그래밍 작성방법이나 사용되는 함수 모두 리눅스에서의 socket기반 프로그래밍과 큰 차이가 없다. 솔직히 이런 생각이 든다. Berkely socket API 인터페이스를 그대로 유지하면 안되었을까 ?

winsock 제공함수들

windows는 소켓을 파일로 보지 않는다. 해서 socket(), accept(), bind(), connect()에서 file discriptor를 쓰는대신에 SOCKET객체를 사용하게 된다. winsock 에서의 socket 함수는 다음과 같이 사용된다.
SOCKET socket(
  __in  int af,
  __in  int type,
  __in  int protocol
);
함수명에서 부터 인자들 모두가 표준 socket 함수와 동일한데, 리턴값이 다름을 확인할 수 있다.

winsock API

현재 함수은 Berkely socket API에 연결되어 있다. 차근차근 winsock 함수들에 대해서 정의해나갈 생각이다.
제목 저자 변경일

컴파일

visual studio 2008 을 기준
  • winsock 애플리케이션은 winsock.dll 이 로딩되어야 한다. 그러므로 winsock 관련 library를 링크 해야한다.
  • Solution Explorer > Project Name 선택 > Linker > Command Line > Additional options 에 ws2_32.lib 추가.

관련글