繁体   English   中英

“java.net.BindException:已经在使用的地址”当我已在同一端口上运行服务时

[英]“java.net.BindException: Address already in use” when I am already running a service on the same port

我有一个服务器套接字程序,当我运行此程序时,我收到以下错误:

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端口。

有什么方法可以解决这个错误?

特定于Mac

我的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上

您应该更改您的端口号。 我有同样的错误。 我更改了端口号后,就解决了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM