1. ホーム
  2. java

[解決済み] ServerSocket.socketBindを使用して要求されたアドレスを割り当てることができない

2022-03-05 20:18:24

質問

ソケットサーバーをセットアップしようとすると、エラーメッセージが表示されるのですが。

Exception in thread "main" java.net.BindException: Cannot assign requested address: JVM_Bind
    at java.net.PlainSocketImpl.socketBind(Native Method)
    at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:383)
    at java.net.ServerSocket.bind(ServerSocket.java:328)
    at java.net.ServerSocket.<init>(ServerSocket.java:194)
    at java.net.ServerSocket.<init>(ServerSocket.java:106)
    at socketyserver.SocketyServer.main(SocketyServer.java:12)
Java Result: 1

コード全体は、できるだけシンプルにしました。

public static void main(String[] args) throws UnknownHostException, IOException
{
    ServerSocket serverSocket;
    serverSocket = new ServerSocket(9999);
}

Windowsファイアウォールがオフで、ポートが転送されていることは100%確認済みです。ポート9999をブロックするものはありません。他に何か問題があるのでしょうか?

解決方法は?

他の方が指摘されているように、ポートを使っている他のプロセスが関係している可能性が高いです。 9999 . Windowsの場合、コマンドを実行します。

netstat -a -n | grep "LIST"

そして、ポートを占有しているものがリストアップされるはずです。もちろん、タスクマネージャでそれらのプログラムを手動で終了させる必要があります。それでもうまくいかない場合は、この行を置き換えてください。

serverSocket = new ServerSocket(9999);

とともに。

InetAddress locIP = InetAddress.getByName("192.168.1.20");
serverSocket = new ServerSocket(9999, 0, locIP);

もちろん 192.168.1.20 を実際のIPアドレスに置き換えるか、あるいは 127.0.0.1 .