gpt4 book ai didi

java - 为什么 DataInputStream.readUTF() 导致主线程永远等待? [套接字编程]

转载 作者:行者123 更新时间:2023-12-02 03:08:10 27 4
gpt4 key购买 nike

我有一个用 Java 编写的小型 Socket 服务器。我的应用程序基本上从套接字读取数据并将其写入输出。无论如何,当我尝试使用 readUTF() 从 Socket 读取数据时函数它只是导致主线程等待,然后在第二个连接处给出 EOFException 但如果我使用 DataInputStream.readLine()功能正在运行。

我的代码为 readUTF() :

private static PrintStream console = System.out;

public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
ServerSocket serverSocket = new ServerSocket(5112);
console.println("Server Started !");
while(true){
console.println("Loop");
Socket client = serverSocket.accept();

console.println("Processing Request");
DataInputStream in = new DataInputStream(client.getInputStream());
console.println("Proccessing in");
console.println("Available : " + in.available());
console.println("Request Body : \n");
String str = in.readUTF(in);
console.println(str);
console.println("Waiting for new !");
}
}

输出是:

Server Started !
Loop
Processing Request
Proccessing in
Available : 0
Request Body :

最佳答案

readUTF() 读取二进制编码流,而不是文本数据。因此,由于编码的原因,代码预计可能有数千个字符。

参见readUTF()文档。

关于java - 为什么 DataInputStream.readUTF() 导致主线程永远等待? [套接字编程],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41436367/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com