为什么ServerSocket.accept()不起作用?

时间:2012-06-26 20:14:45

标签: java sockets serversocket

在我提出这个问题之前,我会道歉,因为我不知道这里出了什么问题,所以我只是提前说这可能是一个痛苦的事情要跟随。

public void setUp(){
    try {
        port = Integer.parseInt(JOptionPane.showInputDialog("Enter the port to host server on"));
        server = new ServerSocket(port);
        System.out.println(server.getLocalPort());
        connection = server.accept();
        out = new PrintWriter(connection.getOutputStream());
        in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        connected = true;
        loop();
    } catch (Exception e) {
        connected = false;
        System.err.println(e.getMessage());
        JOptionPane.showMessageDialog(null, "Something went wrong there, be sure to use syntax:\nport: 1337\nMaybe the selected port is in use?");
        System.exit(-1);
    }
}

上面的代码应该是这样我可以设置任何客户端可以连接的基本服务器,我不认为客户端代码目前是相关的,但是如果需要则请询问。

无论如何,我的问题是,当我调用此方法时,它运行正常,直到它命中

connection = server.accept();

然后该方法就像我键入return一样结束; !

任何人都可以告诉我为什么会发生这种情况以及如何解决这个问题?

另请注意

port =端口的整数 server = ServerSocket 连接=套接字 out = PrintWriter in = BufferedReader connected = boolean

1 个答案:

答案 0 :(得分:2)

也许它看起来只是因为connection = server.accept();会使线程等待直到客户端连接。