윈속 라이브러리에서는 소켓과 로컬 네트워크 인터페이스와 결합하는 bind 함수를 제공합니다.
소켓과 로컬 네트워크 인터페이스를 결합하는 함수 int bind(SOCKET sock,const struct sockaddr *addr,int addrlen); 실패 시: -1(SOCKET_ERROR) 반환 소켓 주소 구조체 typedef struct sockaddr { u_short sa_family; //소켓 주소 체계 CHAR sa_data[14]; //상위 14바이트 주소 } SOCKADDR, *PSOCKADDR, FAR *LPSOCKADDR; IPv4 소켓 주소 구조체 typedef struct sockaddr_in { short sin_family; //소켓 주소 체계, IPv4는 AF_INET(PF_INET과 같음) USHORT sin_port; //포트 번호 IN_ADDR sin_addr; //IPv4 주소 CHAR sin_zero[8]; //항상 0 } SOCKADDR_IN, *PSOCKADDR_IN;
소켓 통신 프로그램 중에 서버는 로컬 네트워크 인터페이스와 결합하는 과정은 필수입니다. 서버에서는 약속한 주소(서버 네트워크 주소와 포트)로 결합하면 클라이언트 측에서는 연결을 요청할 수 있습니다.
윈속을 사용하여 IPv4 소켓 주소를 표현할 때는 struct sockaddr_in 형식 변수에 소켓 주소 체계를 AF_INET으로 지정하고 자신의 IPv4 주소와 사용할 포트 번호를 지정합니다. 그리고 IPv4에서는 사용하지 않는 나머지 부분은 항상 0으로 설정합니다.
struct sockaddr_in servaddr={0}; servaddr.sin_family = AF_INET; servaddr.sin_addr = GetDefaultMyIP(); servaddr.sin_port = htons(10200); int re = 0; re = bind(sock,(struct sockaddr *)&servaddr,sizeof(servaddr)); if(re == -1) { printf("bind 실패\n"); return 0; } printf("bind 성공\n");