gpt4 book ai didi

java - 从线程中的 Java TCP 套接字读取

转载 作者:行者123 更新时间:2023-12-01 13:32:18 25 4
gpt4 key购买 nike

我有这个 TCP 套接字(我只发布了相关部分并删除了异常抛出):

static Socket clientSocket;
static BufferedReader inFromServer;

连接部分(我从另一个类中调用它):

static Socket clientSocket = new Socket(ip, port);
static BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

为了接收文本,我有一个可运行的线程,我这样调用:

public static void StartRecievingText(){
TCPScanner.setReader(inFromServer);
Thread t1 = new Thread(new TCPScanner());
t1.start();
}

主题:

public class TCPScanner implements Runnable {

static BufferedReader inFromServer;

public static void setReader(BufferedReader reader){
inFromServer = reader;
}

public void run() {
while (true) {
String temp = inFromServer.readLine();
System.out.println(temp);
}
}
}

线程运行到 inFromServer.readline() 部分,但似乎没有收到任何消息。

这是我第一次使用线程,...第二次使用 TCP 连接,所以我不知道我是否做错了什么。

感谢您的帮助(并对拼写错误表示歉意......仍在学习英语)

最佳答案

您的客户端正在读取行,但您没有发送行,因此客户端会永远阻塞,等待永远不会到达的行终止符。要么在发送的内容中添加换行符,要么使用其他不需要换行符的读取方法。

您的代码还存在其他问题。这些数据项都不应该是静态的。您的读取循环应测试 readLine() 的结果是否为 null,如果为 true,则关闭套接字并退出。

关于java - 从线程中的 Java TCP 套接字读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21497658/

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