Thisリンクは、非ブロッキングソケットを開くためのチュートリアルを提供します。ただし、ここで提供されるメソッドは任意のランダムポートを取得するオプションを提供しません。また、このjava doc pageに示されているすべてのコンストラクタは、引数としてアドレスをとります。これを行う方法は?Java NIOソケットは、使用可能な任意のポートで接続しますか?
2
A
答えて
3
ビットハックの解決策が私のために働いています。通常のSocketを作成して、ポート引数を0にして(ランダムに利用できるソケットを取得する)接続し、そのアドレスを取得することができます。このソケットを閉じ、SocketChannelの作成中にこのアドレスを引数として渡します。 しかし、スレッドが並列にソケットを作成しているマルチスレッドプログラムでは、これが問題になる可能性があるので注意してください。 2つの並列スレッドt1およびt2を考える。 t1がソケットを作成してそのアドレスを取得し、それを閉じた後、コンテキストを切り替えたとします。 t1がこのソケットを使って非ブロッキングチャンネルに接続する前に、t2が同じポートを取得しました。そのような場合には、ノンブロッキング(SocketChannel)接続が確立されなくなるまでループを続けると良いでしょう。
5
あなたがInetSocketAddressのコンストラクタを見れば、ゼロのポート番号は、システムがバインドでの一時的なポートを拾うようになる有効なポート値は0〜65535の間で
ことが述べられています操作。
本質的には、InetSocketAddress
を0にして、ランダムなポートが選択されます。
関連する問題
- 1. 多機能ソケットjava、ソケット対NIOソケット
- 2. 異なるポートとのソケット接続
- 3. ubuntu 12.04のポート3306を開き、任意のIPからmysqlへの接続を許可します
- 4. NumberFormatterは引数ラベル「(_ :)は」使用可能な任意のオーバーロードに
- 5. Javaソケット接続
- 6. 私のソケットにポート8080で接続するランダムな人
- 7. boto.rds2はbotoプロフィールを使用して任意の地域に接続します
- 8. JavaScriptのポート43(whois)へのソケット接続
- 9. EntityFrameworkは任意のデータプロバイダに接続できますか?
- 10. telnetはどのようにして任意のポートに接続できますか?
- 11. Javaソケット接続Reuse
- 12. Java 1.3でソケットを使用してWebサービスに接続する
- 13. Xdebug:任意のホストからの接続
- 14. データベースシングルコンフィグレーションファイルで任意のデータベースへのjavaとの接続
- 15. 引数ラベル「(contentsOfURL :,エラーが:)」使用可能な任意のオーバーロードに
- 16. はJava8で利用可能な任意の簡単な機能がにあり
- 17. Java NIOを使用して1000sの並行接続を処理する方法
- 18. QtとのJavaソケット接続
- 19. 複数のJavaソケット接続
- 20. Javaソケット内の接続数
- 21. Eclipseは任意のLinuxディストリビューションで利用可能です
- 22. Javaでのソケット接続によるネットワーク使用量の測定
- 23. IntelliJを使用したJavaプロセスのデバッグ - ソケットに接続しますが、ターゲットVMに接続しません。
- 24. 任意のAPIのパーフェクトセレンで利用可能なドキュメントとappiumプラグイン
- 25. Azure-AD OIDC:任意のログが利用可能ですか?
- 26. RMIを使用してローカルモード(ポートなし)で接続する
- 27. 接続がすでに使用されているときにJavaがnio SocketChannel接続を取得する
- 28. 無線LANでJavaソケットを接続していますか?
- 29. Windows Phone 8で利用可能な任意のグラフ
- 30. Javaソケット:Socket.close()はWindowsとMacで異なる接続を終了しますか?
NIOと同じように動作するかどうかはわかりませんが、これを試すことができます:https://stackoverflow.com/questions/2231467/dynamically-choosing-port-numberポート0にバインドするだけで、ランダムな空きポートが選択されます – Warrior