我有以下构造:
try {
serverSocket = new ServerSocket(port);
} catch (Exception e) {
throw new RuntimeException("Could not create server socket.");
}
并且构建失败,并且出现“无法创建服务器套接字”错误。端口始终为8085。我在(Windows 7)防火墙中同时打开了出站和入站端口。可能是什么问题呢?
异常(exception)是IOException:
运行
netstat -an
会得到以下结果:TCP 0.0.0.0:8085 0.0.0.0:0 LISTENING
TCP [::]:8085 [::]:0 LISTENING
堆栈跟踪:
java.net.BindException: Address already in use: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(Unknown Source)
at java.net.ServerSocket.bind(Unknown Source)
at java.net.ServerSocket.<init>(Unknown Source)
at java.net.ServerSocket.<init>(Unknown Source)
at cs236369.proxy.ProxyServer.<init>(ProxyServer.java:21)
at cs236369.proxy.ProxyServer.main(ProxyServer.java:63)
最佳答案
根据API,BindException
基本上,由于不干净的关机,该端口可能被另一个进程使用,甚至可能被同一应用程序的另一个实例使用。此link可以帮助您进行故障排除。
笔记:
运行netstat -an
命令的发布结果似乎可以验证端口8085是否已被多个进程使用,这将导致您遇到的BindException
。