안녕하세요 포트 번호를 사용할 수 있는지 확인하는 쉬운 방법이 있다면 궁금하네요 그래서 내가 미리 사용할 수 있도록 그것을 예약? 아래 코드는 그 일을하는 데 효과가 있지만 복잡한 것 같습니다. 포트 Numner을 예약쉬운 방법으로 C에서 포트 번호를 예약
int getSocketNo(){
socklen_t namelen;
struct sockaddr_in node;
int sock_1;
/* ----Address information for use with bind---- */
node.sin_family = AF_INET; /* it is an IP address */
node.sin_port = 0;
node.sin_addr.s_addr = INADDR_ANY; /* use any interface on this host*/
/* ----Create TCP/IP socket---- */
sock_1 = socket(AF_INET, SOCK_STREAM, 0);
if (sock_1 == -1) {
perror("socket() Socket was not created");
exit(-1);
}
while(1){
/* ----Bind socket to address and port---- */
if (bind(sock_1, (struct sockaddr *) &node, sizeof(node))) {
perror("Server bind error");
continue;
}
int y = 1; // not sure what this does yet
setsockopt(sock_1, SOL_SOCKET, SO_REUSEADDR, &y, sizeof(y));
/* ----Find out what port number was assigned---- */
namelen = sizeof(node);
if (getsockname(sock_1, (struct sockaddr *) &node, &namelen)) {
perror("Server get port number");
exit(-1);
}
close(sock_1);
break;
}
return ntohs(node.sin_port);
}