サーバーのポートで7761を実行し、IPを10.2.110.43とすると、ポート7761での接続を待機しているさまざまなサーバーで実行され、そのポートにASCII形式でデータを書き込むクライアントが多数あります。
サーバーソケットでclient-ipadressを確認してから、クライアントからの接続を受け入れるようにします。
それを行う方法はありますか?
サーバーのポートで7761を実行し、IPを10.2.110.43とすると、ポート7761での接続を待機しているさまざまなサーバーで実行され、そのポートにASCII形式でデータを書き込むクライアントが多数あります。
サーバーソケットでclient-ipadressを確認してから、クライアントからの接続を受け入れるようにします。
それを行う方法はありますか?
の下で実行してもかまわずSecurityManager
、IP アドレスのリストが静的である場合は、security.policy
ファイルを介してこれを実行できます。"accept"
接続を受け入れたい IP アドレスのみにSocketPermission を付与するだけです。ただし、別の回答で提案されているように、コードまたはファイアウォールで実行することをお勧めします。
次のコードを見ると、 の前後 accept()
で対応するアドレスを確認できません。
Socket client = serverSocket.accept()
if( acceptedClients.contains( client.getInetAddress()) {
...
}
else {
client.close();
}
acceptedClients
よく知られている InetAddress のコレクション。
特定の IP からのものでない限り、接続を Java に到達させたくない場合はServerSocket#accept()
、これを行うようにファイアウォールを構成する必要があります。
接続が確立された後はいつでも IP アドレスを検証し、正しい IP からのものでない場合はすぐに閉じることができます。