複数のソケットをバインドしようとすると、コードに問題が見つかりました。状況を説明しようとすると、2 つの部分で構成されるアプリケーションがあります。1 つは machine_1 で実行される C で記述され、もう 1 つは machine_2 で実行される Java で記述されています。C プログラムは、1 つのポートを介して、リッスンしている machine_2 の 4 つのポートに udp パケットを送信できる必要があります。逆に、machina_2 は、1 つの発信ポートを介して、machine_1 の 4 つの対応するポートに udp パケットを送信する必要があります。
問題は machine_1 にあります。
- そこには 2 つのスレッドがあり、1 つは machine_2 への送信データを処理し、もう 1 つは受信データを処理しています。最初のスレッド (送信データの処理) 内で、4 つのソケット (4 つの異なるポートを持つ) を作成して、machine_2 の対応するソケットに対処します。その方向でうまく動作します...
- しかし、machine_2 からの着信データ用のソケットを作成しようとすると、machine_2 の着信データに使用したのと同じポート番号を使用したいのですが、ソケットをバインドしようとすると問題が発生します。
: Address already in use
私にエラーを与えます。
送信ポートと受信ポート用に C アプリケーション内で machine_1 のソケット構成をセットアップする方法について、助けが必要です。select()
そして、関数を使用して 4 つの着信ソケットすべてをリッスンする方法の例かもしれません。
コード例が必要な場合は、ここに追加できますが、先ほど述べたように、これは、1 つのソケットから machine_2 の 4 つの異なるソケットへの送信データを処理する thread_1 に対してのみ機能します。
よろしくお願いします。
添付の写真が状況をもう少し説明できることを願っています。重要なのは、受信データに両方のマシンで同じポート番号を使用したいということです。つまり、machine_1 の port_1 は machine_2 の port_1 と同じポート番号を持ちます。