0

ポート構成が異なる 4 つのソケットを作成しました。関数を使用してselect、4 つのファイル記述子の 1 つから読み取りました。しかし、どのポートで UDP パケットを受信したかを知るにはどうすればよいでしょうか。ファイル記述子しかありませんよね? ポートに応じて、受信したパケットを異なる方法で処理する必要があります。この関数は、パケットの送信元ポートを読み取ることができるrecv_froma を埋めますが、宛先ポートは読み取れません。struct sockaddr

よろしくお願いします。

4

1 に答える 1

0

selectチェックするセットに 4 つのソケットすべてを追加すると、返されたときにselectセットにアクティブなソケットが含まれます。

どの特定のソケット/ポートから戻ってくるかを把握する方法は 2 つありますselect

  1. お手持ちのソケットと比べてみてください。
  2. ローカル ポートを取得し (ただしgetsockname)、ポートと比較します。

最初の選択肢をお勧めします。

于 2012-05-23T12:19:23.040 に答える