我有这个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连接,所以我不知道我做错了什么。
感谢您的帮助(抱歉拼写错误......仍在学习英语)
答案 0 :(得分:1)
您的客户端正在读取行,但您没有发送行,因此客户端会永远阻止等待永不到达的行终止符。为发送的内容添加换行符,或者使用不需要它的其他读取方法。
您的代码还有其他问题。这些数据项都不应该是静态的。您的读循环应该测试readLine()的结果为null,并关闭套接字并退出,如果为true。