win소켓
win소켓은 말그대로 윈도우용 소켓을 말합니다. 보통 리눅스를 서버로 많이 이용하고 윈도우를 클라이언트로 많이 이용하는데 따라서 윈도우 소켓도 필요합니다.
int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);
윈도우 소켓 프로그래밍을 할떄는 WSAStartup함수를 호출하여 프로그램에서 요구하는 윈도우 소켓의 버전을 알리고 해당 버전을 지원하는 라이브러리의 초기화 작업을 진행할수 있습니다.
성공 시 0, 실패 시 에러코드 값을 반환한다.
<winsock2.h>을 include해야한다.
<예제> <출처 열혈 tcp/ip 소켓 프로그래밍>
1 2 3 4 5 6 7 8 9 10 11 12 | #include <stdio.h> #include <winsock2.h> #include <fcntl.h> int main(int argc, char* argv[]) { WSADATA wsadata; if (WSAStartup(MAKEWORD(2, 2), &wsadata) != 0) { fputs("WSAstartup error", stderr); fputc('\n', stderr); } return 0; } | cs |
WSAStartup이 실패하면 오류를 뜨게 하는 프로그램입니다.
WSAStartup에 인자로 들어가기 위해서는 MAKEWORD를 이용하여 사용할수 있습니다.
만약 소켓버전이 1.2이다면 MAKEWORD(1,2) 이런식으로 할수 있습니다. 또 WSAStartup에 두번째 인자로 준
WSADATA의 구조체의 변수의 주소를 줍니다. 따라서 WSADATA 구조체의 변수인 wsadata의 주소가 들어가는 겁니다.
int WSACleanup(void);
위의 함수를 사용하면 할당된 윈도우 소켓 라이브러리는 윈도우 운영체제에 반환 되면서 윈도우 소켓 관련 함수의 호출이 불가능해 집니다.
소켓을 더이상 사용할 필요가 없을때 해줍니다.
성공시 0, 실패시 SOCKET_ERROR를 반환해줍니다.
<winsock2.h>을 include해야한다.
SOCKET socket(int af,int type, int protocol);
리눅스의 socket과 같은 기능을 제공합니다.
성공시 소켓 핸들을 해주고, 실패하면 INVAILD_SOCKET(소켓오류인듯? 댓글로 아시는 분 설명좀)을 반환해줍니다.
<winsock2.h>을 include해야한다.
https://www.joinc.co.kr/w/man/4100/socket<소켓 인자로 들어가는거 설명>
int bind(SOCKET s, const struct sockaddr * name, int namelen);
리눅스의 bind 함수와 같은 기능을 제공하고 IP주소와 PORT번호 할당을 목적으로 합니다.
성공시 0, 실패 시 SOCKET_ERROR를 반환합니다.
<winsock2.h>를 include해야합니다.
https://www.joinc.co.kr/w/man/4100/bind<bind에 들어가는 인자 설명>
int listen(SOCKET s, int backlog);
이 함수는 소켓이 클라이언트 프로그램의 연결의 요청을 받아드일 수 있는 상태가 되게 하는 것을 목적으로 호출되는 함수입니다.
성공시 0, 실패시 SOCKET_ERROR를 반환합니다.
<winsock2.h>를 include 해야함.
https://www.joinc.co.kr/w/man/4100/listen<listen의 자세한 설명>
SOCKET accept(SOCKET s, struct sockaddr * addr, int * addrlen);
이 함수는 클라이언트 프로그램에서 연결 요청을 허락할때 호출하는 함수입니다.
성공시 소켓 핸들, 실패시 INVALID_SOCKET을 반환합니다.
<winsock2.h>를 include 해야함.
https://www.joinc.co.kr/w/man/4100/accept<accept 자세한 설명>
int connect(SOCKET s, const struct sockaddr * name, int namelen);
이 함수는 클라이언트 프로그램에서 소켓을 기반으로 연결요청을 할 떄 호출하는 함수입니다.
성공시 0, 실패시 SOCKET_ERROR를 반환합니다.
<winsock2.h>를 include해야한다.
https://www.joinc.co.kr/w/man/4100/connect<connect 자세한 설명>
int closesocket(SOCKET s);
이 함수는 소켓을 닫을때 호출하는 함수입니다.
성공시 0, 실패 시 SOCKET_ERROR를 반환합니다.
<winsock2.h>를 include해야한다.
https://msdn.microsoft.com/ko-kr/library/windows/desktop/ms737582(v=vs.85).aspx<closesocket 자세한 설명>
'소켓' 카테고리의 다른 글
소켓 프로토콜과 데이터 전송 특성 (0) | 2018.06.27 |
---|---|
소켓프로그래밍2 리눅스 (0) | 2018.06.24 |
소켓프로그래밍1 리눅스 (1) | 2018.06.24 |