web-dev-qa-db-ja.com

Java localhostのみのソケットを作成するには?

Javaサーバー(Thriftを使用))。このサーバーには、Obj-cのローカルマシン上にJavaサーバー。すべてがローカルホストで発生します。現在、Javaサーバーもネットワーク上に表示されています。Javaサーバーそれ以外の場合は潜在的なセキュリティの脆弱性であり、ファイアウォールが警告したときにユーザーを驚かせます。

InetSocketAddress( 'localhost'、9090)を使用してサーバーソケットを作成しようとしましたが、効果がないようです。このことをローカルホストに制限するにはどうすればよいですか?

31
Matt Ronge

別の質問から取得:

_new ServerSocket(9090, 0, InetAddress.getByName(null));
_

InetAddress.getByName(null)はループバックアドレスを指します(127.0.0.1)

そして、 ここにあります それが言っているJavadoc

40
Matías

試して

new ServerSocket(9090, 0, InetAddress.getByName("localhost"))

コンストラクターの最後のパラメーターは、リスニングソケットをバインドするアドレスを指定します。

21
Geoff Reedy

ループバックデバイスでのみ使用できる代替ソリューションを紹介します。他のすべての「localhost」ソリューションは、Javaインターフェイスを選択します。

new ServerSocket(9090, 0, InetAddress.getLoopbackAddress());

これはJava 7であり、UnknownHostExceptionをスローすることさえありません。

20
Fabian Lange
new ServerSocket(9090, 0, InetAddress.getByName(null));
3
user207421