Javaを使用すると、特定のTCP/IPポートが開いていてファイアウォールでブロックされていないかどうかを確認するにはどうすればよいですか?Javaでオープンポートを確認する
答えて
によって、その後あなただけ行うことができ、このポートは、サーバーのアプリケーションで使用できることを、あなたは意味「ポート開いている」場合:
あなたは上のオープンサーバソケットができない場合にIOExceptionがスローされますtry {
serverSocket = new ServerSocket(port);
} catch (IOException e) {
System.out.println("Could not listen on port: " + port);
// ...
}
をこのポート。
「ファイアウォールでブロックされていない」とは、ネットワーク外のホストからこのポートにアクセスできる場合、外部ネットワークからのホスト:ポートへの接続を開かずにこれを確認する直接の方法はありません。サービスが開始されるホストと、サービスに接続しようとする可能性のあるホストとの間に、他のファイアウォール/ NATが存在する可能性があります。
外部ネットワークからのサービスアクセシビリティを確認できるいくつかの一般的なテクニックがあります。たとえば、NAT traversalを参照してください。
ポートが着信接続で開いているかどうかを確認しますか?ファイアウォールに尋ねる必要があります。ポートを聴いたが、このポートはファイアウォールによってブロックされているとしたら、「永遠に」待つだろう。
唯一の方法は、ネットワーク/マシンの外にある小さなサーバーを外して、遠隔からそのマシンの特定のポートへの接続を確立するように依頼することです。リモートサーバーは、接続できたかどうかを(異なるチャネル上で)返信することができます。
もう1つのアイデア:ウェブ上の多くのポートテストサービスの1つを使用してください。グーグル "ポートテストオンライン"いくつかの結果を提供します。
ソケットを使用すると、ネットワーク内の2台のマシンを接続できます。
- パーソナルファイアウォール、両側の両側に企業の
- ファイアウォール:この方法にはいくつかのfilrewallsがあるかもしれません。
- 両側のISPのファイアウォール。
ファイアウォールは
- 特定IPを遮断するように構成することができる
異なる2(/アウトバウンドで)状況はTCPの視点から同じように見える:
- サーバーは、まもなく(上記参照)ポート
- ファイアウォールブロック接続へ
を聞いていない第1あなたがテストしたい何をすべきかを決定する必要があります。たとえば、特定のマシンの特定のポートnew Socket(host, port)
に接続して例外をキャッチできることを知りたい場合は、ファイアウォールがあなたを悩ませたり、リモートが応答しなかったりする状況を区別したい場合は、十分ではありません。
この場合、他の参照が必要です。たとえば、リモートホストにHTTPサーバーがあり、ファイアウォールでブロックできる他のプロプライエタリサーバーがあることがわかります。まず、HTTP接続を確立して(ホストが有効かどうかを確認して)、ソケットに接続しようとします。 HTTPが動作し、ソケットがおそらくファイアウォールでブロックしていない場合
- 1. Java/JSPで印刷を確認する
- 2. Javaで入力を確認する
- 3. xmlスキーマでjava値を確認する
- 4. Java - オンラインパスワードを確認
- 5. オープンポートにUDPパケットを送信したかどうかを確認する方法はありますか?
- 6. Java XMLノードを確認する
- 7. Java画像のヘッダーを確認する
- 8. opensslでJavaでデジタル署名を確認
- 9. Google Cloud Shellのオープンポート
- 10. AWS EC2インスタンスのオープンポート
- 11. Cリモートサーバ上のオープンポートをスキャンする
- 12. Javaプログラムで 'stderr'が空であることを確認する
- 13. テレグラムユーザ名がテレグラムであることをJavaで確認する
- 14. Softlayer APIオープンポートを取得
- 15. java errorhandling:numberformatexceptionsの確認方法
- 16. Javaマルチスレッド同期の確認?
- 17. Javaロボットの確認mouseclick
- 18. エラーページwebdriverの確認java
- 19. Javaの確認ボックス|コンパイルエラー
- 20. Javaの処理確認ダイアログボックス
- 21. Javaサーバーソケット:ファイアウォールでブロックされていないオープンポートを探します。
- 22. C#でJavaで署名されたものを確認する
- 23. Javaでオブジェクトがnullであることを確認します。
- 24. Javaでのコア数の確認
- 25. twilioを使ってJavaで電話番号を確認する
- 26. LinuxでJavaランニングのJavaからKERBEROSでhttp要求を確認する
- 27. Javaで有効なdoubleを確認する
- 28. Java Signature Class SignatureをOpenSSLで確認する
- 29. javaとmsアクセスでユーザー名とパスワードを確認する
- 30. javaキーストアで証明書の有効期限を確認する
これを試してみましたが、** ANY **ポートの例外はスローされません!何故ですか?私は 'netstat'を実行し、そこにリストされているポートは、ESTABLISHED、CLOSE_WAIT、TIME_WAIT、LISTENINGのいずれかである - 例外をスローせずに動作する! – GPX
ローカルマシンにリスニングソケットを作成できるかどうかをテストするだけで、ファイアウォールが開いているかどうかはテストされません(ファイアウォールでブロックされていないことを教えてください)着信接続または発信接続の場合は、ファイアウォールだけを意味しますか、着信接続の場合には適切なポート転送が必要なNATゲートウェイも意味します)。あなたはどんなポートでも、1から65536までのすべてのポートを意味しますか? – nos
@nosポートが同じネットワーク上の他のマシンとの間で着信および発信接続に使用できることを確認する必要があります。はい、1から65535までのすべてのポートを意味します。 – GPX