socket.accept()不执行

时间:2015-04-01 16:16:26

标签: java sockets

我有这个代码,我只是下载它。

import java.io.*;
import java.net.*;

public class Server {
 public static void main(String argv[]) throws Exception
 {
    String clientSentence;
    String capitalizedSentence;
    ServerSocket welcomeSocket = new ServerSocket(6060);

    while(true)
    {
       Socket connectionSocket = welcomeSocket.accept();
       System.out.println("ssss");
       BufferedReader inFromClient =
          new BufferedReader(new  InputStreamReader(connectionSocket.getInputStream()));
       DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
       clientSentence = inFromClient.readLine();
       System.out.println("Received: " + clientSentence);
       capitalizedSentence = clientSentence.toUpperCase() + '\n';
       outToClient.writeBytes(capitalizedSentence);
    }
}

}

首先它跑得很好然后当我试图将它运行回来时它会运行但是它没有达到打印声明:

System.out.println("ssss");

它在welcomeSocket.accept();

停止

即使我尝试过我之前使用过的旧服务器代码也没有在同一部分运行和停止,但它从linux终端运行。

1 个答案:

答案 0 :(得分:2)

它按预期工作。 .accept()函数是一个阻塞函数,这意味着.accept()等待连接尝试并将代码保存在那里。

如果您连接到服务器,它将超过该点,打印sss一次,并在执行剩余的while循环后,再次卡在那里直到您建立新连接。