【发布时间】:2014-03-24 15:01:46
【问题描述】:
我有 3 台服务器,我在这些服务器中运行以下代码。但是其中一个给出了错误:
Exception in thread "main" java.net.BindException: Address already in use
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.AbstractPlainSocketImpl.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 MultiThreadServer.main(MultiThreadServer.java:22)
即使我使用命令“ps -ef | grep java | grep -v grep | awk '{print $2}' | xargs kill -9”停止运行程序,它仍然给出相同的异常。 代码如下:
public class MultiThreadServer implements Runnable {
Socket csocket;
MultiThreadServer(Socket csocket) {
this.csocket = csocket;
}
public static void main(String args[])
throws Exception {
ServerSocket ssock = new ServerSocket(8879);
System.out.println("Listening");
while (true) {
Socket sock = ssock.accept();
System.out.println("Connected");
new Thread(new MultiThreadServer(sock)).start();
}
}
public void run() {..}
【问题讨论】:
-
因为一个端口不能被多个程序使用,并且在程序关闭后操作系统可能需要一些时间来清理(特别是如果它崩溃了)
-
如果正确,在其他两台服务器上是如何工作的?
标签: java multithreading sockets exception binding