java - 服务器接受套接字,但之后套接字无法接收任何内容

标签 java sockets client-server

在构建客户端-服务器聊天程序时,我遇到了一个非常奇怪的问题(因为这以前总是有效)。

serversocket 毫无问题地接受客户端的传入连接,但是当我尝试从套接字的输入流读取时,整个方法会阻塞,并且仅在我关闭客户端的套接字时才释放。

我什至用 docs.oracle.com 上的示例代码进行了尝试,但问题仍然存在。

有人可以指出我明显没有看到的错误吗?

服务器代码:

public class Server {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws IOException {
    System.out.println("Creating server socket");

    ServerSocket internetSocket = new ServerSocket(60000);
    if(!internetSocket.isClosed()) {

        while(true) {
            Socket s = internetSocket.accept();
            System.out.println("accepted socket!");

            BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream()));

            String line = null;
            while((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        }
    }
}
}

客户端代码:

public class Client {

public static void main(String[] args) throws IOException {
    Socket s = null;
    try {
        s = new Socket("localhost", 60000);
    } catch (UnknownHostException ex) {
        Logger.getLogger(Start2.class.getName()).log(Level.SEVERE, null, ex);
    }

    PrintWriter outStream = new PrintWriter(s.getOutputStream());
    for(int i=0; i<10; i++) {
        outStream.println("test");
        System.out.println("Sending the message \"test\"");

        try {
            Thread.sleep(5000);
        } catch (InterruptedException ex) {
            Logger.getLogger(Start2.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    s.close();
}
}

最佳答案

创建 printwriter 时忘记添加 true 作为第二个参数 printwriter

new PrintWriter(s.getOutputStream(), true);

它会自动刷新。

关于java - 服务器接受套接字,但之后套接字无法接收任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16201298/

相关文章:

java - C++ 中的 HashCodeBuilder

java - HTML - 有条件地选中复选框

c - 嗅探 C 中的所有网络流量

c++ - 关于 C++ (UNIX) 中的套接字连接超时

javascript - 当客户端互联网关闭时的 Socket.io

c - setsockopt 的目的到底是什么?

java - Double.NaN 的属性以及为什么 Integer 包装器没有 NaN 数据成员?

Java桌面应用程序: Error code:-2147467259 Error code name:failed

java - 服务器/客户端问题 : Local vector not being iterated through right

java - 客户端-服务器应用程序套接字问题