私が取り組んでいるアプリケーションは、複数 (現在は 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()
声明について読みましたが、それは私が使用すべきものでしょうか? 複数のポートでリッスンする理由は非常に単純です。通信しているアプリケーションを識別する必要があります。たとえば、ポートごとに 1 つのアプリケーション。
コメントありがとうございます。
// 更新: ポートごとに 1 つのソケットを設定するにはどうすればよいですか?