Notice
Recent Posts
Recent Comments
Link
«   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
Archives
Today
Total
관리 메뉴

codingfarm

4. 소켓 네트워크 프로그램 개발 - 9, 10. 소켓 프로그램(windows) - 작성중 본문

TCP IP 소켓 프로그래밍

4. 소켓 네트워크 프로그램 개발 - 9, 10. 소켓 프로그램(windows) - 작성중

scarecrow1992 2021. 5. 13. 00:18

windows는 winsock이라는 독자적인 소켓 프로그래밍 환경을 제공한다.

이 winsock에 대해 알아보겠다.

 


winsock을 이용한 소켓 프로그래밍

winsock

  • Windows Socket API의 줄임말
  • Windows 에서의 TCP/IP 기반의 소켓 프로그래밍을 지원하기 위한 소켓 함수들의 모음
  • BSD 소켓 기반
    • 프로그래밍 방법, 함수, 구조체의 사용법 등이 linux와 크게 차이 없다.
  • winsock.dll 파일을 로드해야 사용 가능
    • WSAStartup 함수를 호출하여 로드
    • WSAStartup : 소켓 프로그래밍에 필요한 dll을 로드

 

docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsastartup

WSAStartup의 사용방법

1
2
3
4
int WSAStartup(
  WORD      wVersionRequired,
  LPWSADATA lpWSAData
);
cs

process에 의한 winsock.dll 의 사용을 개시

  •  wVersionRequired
    • 로드할 winsock의 버전
  • lpWSAData
    • 소켓 정보를 채움

 


recv와 send를 통한 데이터 입출력

  • windows는 socket을 파일로 보지 않으므로 파일 입출력 함수가 아닌 winsock에서 제공하는 전용 함수로 통신해야함
  • read 함수 대신 recv 함수, write 함수 대신 send 함수를 씀
1
2
int recv(SOCKET s, char *buf, int len, int flags);
int send(SOCKET s, char *buf, int len, int flags);
cs

위 함수는 BSD 표준 소켓 함수의 입출력 방식을 그대로 채용한것이므로, linux의 read와 write 함수와 함수의 원형 및 사용법이 유사하다.

SOCKET은 unsigned int 의 typedef 형이다.

이들 함수에 대한 자세한 사항은 12장에서 다루겠다.

 

 


winsock을 이용한 클라이언트 프로그램의 작성

 

 

 

 

 

 

 

 

 

Comments