ищет, чтобы создать прослушиватель tcp, который будет считывать информацию из соединения и отвечать некоторыми данными.чтение нескольких строк из потока TCP
У меня есть программа, работающая на одном линейном вводе, но когда я отправляю несколько строк, она не работает.
Вот код, который я использовал
try {
Socket clientConnection = null;
clientConnection = serverSocket.accept();
clientConnection.setSoTimeout(5 * 1000);
String tmpLine=null;
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
for (tmpLine = inFromClient.readLine(); tmpLine != null; tmpLine = inFromClient.readLine()) {
searchLine += tmpLine;
logMsg = "DBUG : T" + threadName + " readline : " + searchLine;
stubLog.addMessage(logMsg, coreProperties.getLogger(),"DEBUG");
}
} catch (Exception e) {
logMsg = "ERRR : T" + threadName + " : tcpStubWorker: error in getting data : " + e.getMessage();
stubLog.addMessage(logMsg, coreProperties.getLogger(),"ERROR");
e.printStackTrace();
}
Когда я отправляю в этом сообщении от упряжи:
String logonMsg = "msg: 0800 P3A^SNAT2 >>> S3A^SNAT204 15/10/12 16:55:07.00 rec: 001021\n"
+ "bit 007: 1012165507 \n"
+ "bit 011: 498432 \n"
+ "bit 033: (11)59501100554 \n"
+ "bit 070: 001 \n"
+ "bit 100: (11)59503646554 \n";
Я получаю это в журналах:
DEBUG com.stubby.tcp.tcpStub - 14:33:43:494 - DBUG : T00000026 readline : nullmsg: 0800 P3A^SNAT2 >>> S3A^SNAT204 15/10/12 16:55:07.00 rec: 001021
DEBUG com.stubby.tcp.tcpStub - 14:33:43:509 - DBUG : T00000026 readline : nullmsg: 0800 P3A^SNAT2 >>> S3A^SNAT204 15/10/12 16:55:07.00 rec: 001021bit 007: 1012165507
DEBUG com.stubby.tcp.tcpStub - 14:33:43:510 - DBUG : T00000026 readline : nullmsg: 0800 P3A^SNAT2 >>> S3A^SNAT204 15/10/12 16:55:07.00 rec: 001021bit 007: 1012165507 bit 011: 498432
DEBUG com.stubby.tcp.tcpStub - 14:33:43:534 - DBUG : T00000026 readline : nullmsg: 0800 P3A^SNAT2 >>> S3A^SNAT204 15/10/12 16:55:07.00 rec: 001021bit 007: 1012165507 bit 011: 498432 bit 033: (11)59501100554
DEBUG com.stubby.tcp.tcpStub - 14:33:43:552 - DBUG : T00000026 readline : nullmsg: 0800 P3A^SNAT2 >>> S3A^SNAT204 15/10/12 16:55:07.00 rec: 001021bit 007: 1012165507 bit 011: 498432 bit 033: (11)59501100554 bit 070: 001
DEBUG com.stubby.tcp.tcpStub - 14:33:43:603 - DBUG : T00000026 readline : nullmsg: 0800 P3A^SNAT2 >>> S3A^SNAT204 15/10/12 16:55:07.00 rec: 001021bit 007: 1012165507 bit 011: 498432 bit 033: (11)59501100554 bit 070: 001 bit 100: (11)59503646554
ERROR com.stubby.tcp.tcpStub - 14:33:48:627 - ERRR : T00000026 : tcpStubWorker: error in getting data : Read timed out
Любой идеи, почему цикл for не распознает tmpLine! = null?
Я предполагаю, что могу уменьшить таймаут и сделать эту ошибку предупреждением, но это звучит не так!
Спасибо.
спасибо за обратную связь, равноправный использует этот код для отправки данных
Socket clientSocket = new Socket("10.52.88.102", 8888);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
outToServer.writeBytes(logonMsg + '\n');
modifiedSentence = inFromServer.readLine();
System.out.println("From server: \"" + modifiedSentence +"\"");
clientSocket.close();
, но все еще получает ошибку :(поэтому я подозреваю, что я не закрываю соединение правильно ??
Вам не нужно инициализировать переменную, которую вы назначаете в следующей строке. – EJP