我正在开发的应用程序需要能够监听多个(目前是4个)端口号。我需要为每个端口创建一个套接字吗,例如:
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()
语句,这是我应该使用的吗?我监听多个端口的原因很简单,它应该能够识别我正在通信的应用程序。例如,每个端口一个应用程序。
感谢您提前的评论。
// 更新: 如何为每个端口设置一个套接字?