WinSock |
◉WinSock
- 참고 사이트
- http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/win_network_prog/doc/winsock_basic
- http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/TCP_IP/IPv6/IPv6Prog
- http://cafe.naver.com/devctrl/441
- 참고 PDF 파일
- BSD SOCKET을 기반으로 하며, 유닉스 기반의 소켓을 윈도우 환경에 맞게 구성한 API이다.
●WSAStartup() 함수, WSACleanup() 함수
- winsock을 사용하겠다는 뜻이다.
- 반드시 사용되어야 하는 함수이다.
- 이 점이 리눅스와 가장 큰 다른 점이다.
- gcc 컴파일을 하게 될 경우 실제로는 다음과 같이 컴파일 옵션을 입력해주어야 한다.
- gcc -o server server.c -lsocket
- WSAStartip 함수 원형.
- int WSAStartup( WORD wVersionRequested, WSADATA* lpWSAData)
- 인자.
- 1. MAKEWORD 매크로를 사용하여 버전을 설정한다.
- 2. 윈속 시스템 정보를 반환한다.
- WSADATA 구조체 변수를 0으로 초기화 하고 사용하는 것이 좋다.
- 반환 값.
- 성공하면 ‘0’을 반환하고, 실패하면 에러코드를 반환한다.
●socket() 함수, closesocket() 함수
- 네트워크 통신의 주체인 socket을 생성 및 제거한다.
- win32도 socket함수가 존재한다.
- 사용법은 동일하다.
- socket 함수 원형.
- SOCKET socket(int af, int type, int protocol)
- 인자.
- 1. TCP, UDP를 사용하려면 AF에 'AF_INET' 상수를 설정한다.
- 2. 소켓의 통신 타입을 설정한다.
- TCP에서는 type를 SOCK_STREAM으로 설정한다.
- 3. 소켓의 프로토콜이다.
- 0으로 설정하게 되면 호출한 쪽이 사용하는 프로토콜을 선택한다.
- 반환 값.
- 실패하면 INVALID_SOCKET을 반환한다.
●SOCKADDR_IN 구조체
- 서버의 IP와 PORT의 정보를 위의 구조체에 저장한다.
- 구조체 원형.
- struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
- sin_family가 AF_INET이면 인터넷 주소 체계정보를 가지는 구조체가 사용된다.
●bind() 함수
- 소켓에 구조체 정보가 들어앉는다.
- IP, PORT를 소켓에 연결한다.
- sAddr은 필요가 없다.
- bind 함수 원형.
- int bind(SOCKET s, const struct sockaddr* name, int namelen)
- 반환 값.
- 실패하면 SOCKET_ERROR을 반환한다.
●listen() 함수
- 외부로부터 들어오는 접속을 감지하기 위해 특정 소켓이 사용된다는 것을 시스템에 알려준다.
- listen 함수 원형.
- int listen(SOCKET s, int backlog)
- 인자.
- 1. 소켓이다.
- 2. 대기하는 접속을 위한 큐의 최대 길이이다.
- 반환 값.
- 실패하면 SOCKET_ERROR을 반환한다.
●accept() 함수
- 클라이언트가 접속할 때까지 기다리고, 접속하면 통신할 수 있는 소켓을 만들어준다.
- accept 함수 원형.
- SOCKET accept(SOCKET s, struct sockaddr FAR* addr, int FAR* addrlen)
- 인자.
- 1. listen 소켓을 받는다.
- 2. 클라이언트의 IP, PORT등을 저장할 구조체이다.
- 3. 구조체의 크기이다.
- 반환 값.
- 성공하면 클라이언트와 데이트를 송/수신할 소켓을 반환한다.
- 실패하면, 유효하지 않은 소켓 상수 INVALID_SOCKET를 반환한다.
●recv() 함수, send() 함수
- recv 함수.
- 소켓, 버퍼 주소, 버퍼의 최대 크기 등을 인수로 전달하면, 데이터의 수신이 있을때까지 기다린다.
- recv 함수 원형.
- int recv(SOCKET s, char FAR* buf, int len, int flags)
- 반환 값.
- 성공하면 수신된 바이트 수를 반환한다.
- 실패하면 SOCKET_ERROR을 반환한다.
- send 함수.
- 함수에 접속한 소켓, 버퍼, 데이터의 길이, 동작에 관한 flag를 설정하고, 데이터가 전송된다.
- send 함수 원형.
- int send(SOCKET s, const char FAR* buf, int len, int flags)
- 반환 값.
- 성공하면 0을 반환한다.
- 실패하면 SOCKET_ERROR을 반환한다.
'코스웨어 > 15년 스마트컨트롤러' 카테고리의 다른 글
20151130 - 강동조 개인업무일지 winsock1일차 (5) | 2015.12.01 |
---|---|
20151130 임현수 업무일지 Winsock #1 소켓통신 (3) | 2015.12.01 |
20151130_안향진_WINSOCK_1 (5) | 2015.11.30 |
20151130 윤재희 WinAPI #11. winsock을 사용한 서버/클라이언트 프로그램 (5) | 2015.11.30 |
20151130 엄민웅 -WinSock 1일차. (4) | 2015.11.30 |
20151130 업무일지 -여지윤- winsock (5) | 2015.11.30 |
20151130-김재홍-윈도우소켓 (5) | 2015.11.30 |
20151130 수업 / winsock_1 - 남수진 (5) | 2015.11.30 |