0

コードが通信する必要がある FPGA デバイスがあります。プロトコルは次のとおりです。

ゼロ以外のバイト (UDP) を 1 つ送信して、機能を有効にします。次に、FPGA ボードは、送信元のポートでデータを吐き出し始めます。

私のジレンマがわかりますか?メッセージを送信したポートはわかっていますが、どのポートから送信したかはわかりません(通常、このポートは OS によって自動的に選択されませんか?)。

私がやるべきことについての私の最善の推測は、宛先IPとポート番号でソケットを作成し、ソケットを再利用して受信することです。その場合、元のメッセージを送信したポートでリッスンするように既に設定されていますか?

また、参考までに、このコードのバリエーションは Python と C# で記述されます。どちらも BSD ソケット モデルに従っているため、特定の API を調べることができます。

4

4 に答える 4

2

これはまさに何connect(2)のためのものgetsockname(2)です。UDP ソケットを接続するためのボーナスとして、送信ごとに宛先アドレス/ポートを指定する必要がなく、使用できない宛先ポートを検出できます (ターゲットからの ICMP 応答は、次の送信ではなく、次の送信でエラーとして現れます)。 OS は、送信のたびに UDP ソケットを暗黙的に接続および切断する必要がなくなり、サイクルが節約されます。

于 2009-11-20T04:13:59.230 に答える
1

bind特定のポートにソケットを接続できます。確認してくださいman bind

于 2009-11-20T03:35:15.780 に答える
0

ソケットをバインドして、目的のポートを取得できます。

これを行う際の唯一の問題は、コンピューターで一度に複数のプログラムのインスタンスを実行できないことです。

于 2009-11-20T03:34:31.837 に答える