0
私のアプリケーションは、基本的にコマンドに基づいてデータを印刷するプロッタマシンであるハードウェアに接続します。私はソケット接続を行い、いくつかのコマンドを起動しています。ハードウェアにはコマンドが届いていますが、実行されたコマンドの戻り値を取得することはできません。以下はサンプルコードです。エラーはありませんが、この行の実行時に文字列cmd = in.readLine();それは固まった。Javaでソケットを使用してコマンド火災の戻り値
Main.Java
public class Test
{
public static void main(String[] args)
{
try
{
PrintTest printTest = new PrintTest();
printTest.print();
}
catch (Throwable e)
{
e.printStackTrace();
}
}
}
方法、それは改行に遭遇するまで、あなたが立ち往生している理由ですので
public void print() throws IOException
{
Socket socket = null;
try
{
socket = new Socket();
socket.connect(new InetSocketAddress(host, port), 10);
System.out.println("isConnected :- " + socket.isConnected());
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
out.write("TC1004,1;");
out.flush();
String cmd = in.readLine();
System.out.println("Recieved: " + cmd);
}
catch (Throwable ex)
{
ex.printStackTrace();
}
finally
{
if (socket != null)
{
socket.close();
}
}
}
}
多分、行に '\ n'が必要です。 – TomN
'\ n'に達していない場合、readLine()はインストリームからデータを受信し続けるでしょう。 – TomN
@TomN: '\ n'でコードを書いてください。 – Harshil