尝试创建流时无限循环

时间:2016-12-15 11:36:41

标签: java networking server

所以我正在构建一个小型聊天应用程序,但我在设置服务器时遇到了一些麻烦。下面的代码是我的服务器线程中的构造函数:

public ServerThread() {
    System.out.println("Before");

    try {
        ServerSocket serverSocket = new ServerSocket(3500);
        socket = serverSocket.accept();
        System.out.println("After");
        outputStream = new ObjectOutputStream(socket.getOutputStream());
        inputStream = new ObjectInputStream(socket.getInputStream());

    } catch (Exception e) {
        e.printStackTrace();
    }
    executor = Executors.newFixedThreadPool(3);
    connected = true;
}

正如你所看到我有两个打印,“之前”和“之后。在这两个之间,会发生一些导致程序进入无限循环的事情。socket = serverSocket.accept();我也无法捕捉到异常。确定这里有什么问题。

2 个答案:

答案 0 :(得分:0)

(我还不能发表评论)但是accept()会阻止,直到建立连接。它也不是一个无限循环,只是该方法将阻塞,直到连接到该套接字。

您确定您的客户端连接正常吗?

答案 1 :(得分:0)

ServerSocket - “服务器套接字等待通过网络进入的请求”。它根据该请求执行某些操作,然后可能将结果返回给请求者。

所以这里接受()阻止通话。 ie-系统将等待客户端请求,遇到它时会产生相应的响应(作为 - 为每个传入的请求分配新端口并执行给定的操作)

那你怎么看看呢?

尝试创建客户端类并将其与Server应用程序连接。即 -

socket = new Socket(<serverName/host/ip>, <serverPort>);
         System.out.println("Connected: " + socket);

当服务器运行时,尝试运行给定的代码,它将发送请求,服务器将相应地处理它。 希望它有所帮助:)