我有一个服务器套接字程序,当我运行此程序时,我收到以下错误:
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 server已在此端口上运行,这解释了错误。我的硬件设备只将数据发送到此5434端口。
有什么方法可以解决这个错误?
答案 0 :(得分:7)
如果postgresql正在使用该端口,那么您也无法将此端口作为服务器端口打开。关闭postgresql或使用其他端口。
答案 1 :(得分:7)
我的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。
答案 2 :(得分:3)
找出使用您的端口的程序:
sudo netstat -nlp | grep 514
udp 0 0 :::514 :::* 30186/java
告诉我一个java程序在UDP端口514上绑定
答案 3 :(得分:1)
您应该更改您的端口号。我有同样的错误。我更改了端口号后,它就解决了。