这是我第一次使用套接字。约20分钟后,由于某种原因,没有任何错误/异常,套接字没有收到来自服务器的任何信息。我是在代码中犯了一个严重错误,还是错过了某种套接字空闲状态?我尝试使用基础知识。
executorService1.execute(new Runnable() {
@Override
public void run() {
while (true) {
System.out.println("Trying");
String answer = null;
try {
//answer = setInput(s).readLine();
input.ready();
answer = input.readLine();
} catch (IOException e) {
e.printStackTrace();
}
if (answer == null) {
System.out.println("Starting to reconnect");
checkPrintQueue();
try {
s = new Socket(serverIpAddress, serverPort);
input = new BufferedReader(new InputStreamReader(s.getInputStream()));
} catch (IOException e) {
e.printStackTrace();
}
} else if (answer.equals("print")) {
System.out.println("Printed");
checkPrintQueue();
} else {
System.out.println("Testing");
}
}
}
答案 0 :(得分:-1)
在套接字的使用期限内,您需要使用相同的BufferedReader
。否则,您可能会丢失数据。
NB readLine()
返回null时,您必须关闭连接。您正在泄漏套接字。