利用可能なポートにバインドするにはどうすればいいですか?

networking sockets

UDPパケットをネットワークサーバーに送信して応答を受け取るアプリが必要です。 サーバはリクエストが来たのと同じポート番号に応答するので、最初に自分のソケットを任意のUDPポート番号にbind()する必要があります。

UDPポート番号をハードコーディングすることは、同じPC上で実行されている他のアプリケーションによって使用される可能性があるため、不適切な考えです。

UDPソケットを利用可能なポートにバインドする方法はありますか? IMOは、空きポート番号をすばやく取得するのに効果的な方法であるはずです。 accept()関数

もしそうでなければ、バインディングを試しWSAEADDRINUSE / EADDRINUSEステータスをチェックするための最良の戦略は何でしょうか:1025もしくは1025 rand()、あるいはその他から順番にポートを試してみてください。

  41  16


ベストアンサー

別のオプションは、ポート0を `+ bind()`に指定することです。 それはあなたがまだランダムなポートにバインドしている間あなたが特定のIPアドレスにバインドすることを可能にするでしょう(あなたが_複数インストールされている場合)。 どのポートが選択されたかを知る必要がある場合は、バインディングの実行後に ` getsockname()+`を使用できます。

196


最初に + bind +`を呼び出さずにhttp://msdn.microsoft.com/en-us/library/ms740148(VS.85).aspx [+ sendto +`]を呼び出すと、ソケットが自動的にバインドされます(空きポートに) )。

36


私は何かを見逃しているに違いない、なぜあなたはデータを送り返すためにUDPソケットを使わないのですか? sendtoから始めて、recvfrom関数を使って入ってくるデータを読むこともできます。データを送ってきたアドレスをボーナスとして受け取ることができます。

0


タイトルとURLをコピーしました