次の問題があります。アプリケーションに、クエリのためにデバイスにメッセージを送信する単純な TCP クラスがあります。デバイスはメッセージで応答しますが、説明の行末文字はありません。最初に readline 関数を使用しようとして、出力する前に eol 文字が必要であることを発見したシリアルコンバータスキャナー機能にタイムアウトを設定して、接続を切断して移動するか、これを行うためのより良い方法はありますか? 私のコードは以下です:
public String Send_TCP ( InetAddress IPAddress, int POrt, String InData) throws IOException
{
Socket socket = null;
PrintWriter out = null;
BufferedReader in = null;
try {
socket = new Socket(IPAddress, POrt);
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Don't know about host");
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection");
System.exit(1);
}
BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
;
System.out.print("Connected, Sending:"+ InData);
out.println(InData);
System.out.println("Equals");
String str1 = new Scanner(in).useDelimiter(">").next() + ">";
System.out.println(str1);
System.out.println("Equals");
out.close();
in.close();
read.close();
socket.close();
return str1;
}
}