0

ServerSocket を使用して Java で記述されたサーバーを持っています。

また、一般的なポート以外のすべてをブロックしている企業のファイアウォールを越えているクライアントがあります。

SMTP ポート (#25) でサーバーを起動しました。

ファイアウォールを持つユーザーがそれに接続し、これまでのところすべて問題ありません。

次に、サーバーは ServerSocket.accept() を処理します。そして、私が理解している限り、ランダムなポートにソケットを作成します(ポート番号が異なるたびに)。ファイアウォールが原因で失敗します。

私の質問は、ServerSocket.accept() でホワイトリストからソケットのポートを選択するにはどうすればよいですか? 大規模なオンラインには適していないことは理解していますが、サーバーに接続できるように友達を作りたいです。

出来ますか?そしてどうやって?

4

1 に答える 1

0

サーバーソケットはランダムなポートを選択しません。ランダムなポートを選択したのはクライアント ソケットです。私の推測では、あなたのファイアウォールはスマートで、接続がある種の dpi (ディープ パケット インスペクション) によって承認されているかどうかを検出することを知っています。

誤解を招きたい場合は、最初の 2 ~ 3 パケットで smtp のように見えるデータを実行してから、プロトコルに切り替えることができます。

システムの外部で一種のコネクタを使用する別のオプションです。この場合、両方のマシンが 3 番目のクライアントを介して接続されたクライアントです (そのようなプロキシは多数あります)。

于 2012-08-25T20:34:48.743 に答える