アプリケーションを書いていますが、ポイントがわかりません。特定のクライアントからデータを受信しようとしています。TCP ソケットでは、accept は番号を返すfd
ので、このfd
番号を介して特定のクライアントと通信できます。
ではrecvfrom
、そのクライアントからデータを受信するように指定することはできません。送信したすべての人からデータを受信します。これを解決しようとしていますが、これを行う方法がわかりません。
2 つ目の問題は、ソケットを開いた後で別のソケットを開くことです。クライアントに 2 番目のソケット番号を送信すると、クライアントはこの 2 番目のソケットで 2 番目のデータを送信します。サーバー側では、サーバーは (2 番目のソケットではなく) 最初のソケットをリッスンします。ただし、クライアントは 2 番目のソケットからデータを送信し、サーバーは最初のソケットをリッスンしますが、サーバーはデータを取得します。2 つのソケットを整数として出力すると、2 つが異なることがわかります。サーバーは、最初のソケットの 2 番目のソケットで送信されたデータをどのように読み取ることができますか?
ええ、私の質問は少し複雑です。基本的に私は言います:
recvfrom(sock, &client, sizeof(Client), MSG_WAITALL, (struct sockaddr *)&clientAddr2, &size);
上記の行で、特定のクライアント (クライアント 2 など) にリッスンするように指示するにはどうすればよいでしょうか? (TCP ソケットではfd
番号で行われますが、UDP ソケットではどうですか?)