2
현재 작업중인 응용 프로그램은 여러 (현재 4 개) 포트 번호를 청취 할 수 있어야합니다. 다음과 같은 모든 포트에 대해 소켓을 만들어야합니까 :여러 UDP 포트에서 수신 대기하는 C/
if((sock_fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
perror("error: could not create UDP socket\n");
exit(EXIT_FAILURE);
}
bzero(&sock_addr, sizeof(sock_addr));
sock_addr.sin_family = AF_INET;
sock_addr.sin_port = htons(port1);
sock_addr.sin_addr.s_addr = inet_addr(INADDR_ANY);
if(bind(sock_fd, (struct sockaddr *) &sock_addr, sock_len) < 0) {
perror("error: could not bind UDP socket to AU\n");
exit(EXIT_FAILURE);
}
또는 더 우아한 방법이 있습니까? 또한 나는 select()
진술에 대해 읽었을 것이다. 여러 포트에서 수신 대기하는 이유는 간단합니다. 통신하고있는 애플리케이션을 식별해야합니다. 예 : 포트 당 하나의 응용 프로그램.
미리 의견을 보내 주셔서 감사합니다.
// 업데이트 : 포트 당 하나의 소켓을 어떻게 설정해야합니까?
소켓 및 해당 포트를 설정하는 방법에 대한 간단한 소개를 제공 할 수 있습니까? 포트 당 하나의 소켓을 설정하려 할 때마다': Address already in use' 오류가 발생합니다. – nyyrikki
다른 응용 프로그램에서 이미 사용중인 포트로 소켓을 바인드하려는 것일 수 있습니다. C 소켓에 대한 자세한 내용과 예제는 다음을 참고하십시오. http://www.linuxhowtos.org/C_C++/socket.htm – fduff
SO_REUSEADDR 설정은 프로그램이 다운 된 것처럼 사용중인 포트에 많은 도움이됩니다. – Walter