サーバーソケットプログラムが1つあります。このプログラムを実行すると、次のエラーが発生します。
Java.net.BindException: Address already in use
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 Server.main(Server.Java:20)
Could not listen on port: 5434.
エラーを説明するpostgres sqlサーバーがこのポートですでに実行されています。私のハードウェアデバイスは、この5434ポートにのみデータを送信します。
このエラーを回避するための私のオプションは何ですか?
私のJavaプログラムのインスタンスはすでに実行中であり、ポートを占有しています。そのため、新しいインスタンスを起動しようとすると、エラーが発生しました。古いインスタンスを強制終了するために、次のようにします:
Prompt> lsof -i:5434
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Java 71107 neoneye 68u IPv6 0x4a0371dea87d2cd3 0t0 TCP *:http-alt (LISTEN)
Prompt> kill 71107
ところで。この方法でpostgresqlを停止することはお勧めしません。
Postgresqlがポートを使用している場合は、このポートをサーバーポートとして開くこともできません。 postgresqlをシャットダウンするか、別のポートを使用してください。
どのプログラムがポートを使用しているかを調べます:
Sudo netstat -nlp | grep 514
udp 0 0 :::514 :::* 30186/Java
JavaプログラムがUDPポート514でバインドしていることを通知します
ポート番号を変更する必要があります。同じエラーが発生しました。ポート番号を変更した後、解決しました。