【问题标题】:BindException multiplethread serverBindException 多线程服务器
【发布时间】: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


【解决方案1】:

该端口可能已在使用中。尝试使用不同的端口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-24
    • 2015-08-11
    • 2019-01-20
    • 2019-05-27
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多