Socket programming
最近拾ったでこの奇妙な問題が発生しています。client
がと通信するために Socket を使用できることを理解していhost
ます。このプロジェクトISO8583
にも必要です。私はすでに動作するコードを取得しており、独自のテスト ホストで動作するように変更しています。
すべてが順調で、私のコードは実際に動作しますが、私が直面した 1 つの問題は、まったく応答がないことでした。私のコンピューターからホストに送信された要求は機能します。ホストは正しいメッセージを表示し、応答を私のコンピューターに送り返します。しかし、その時点でアプリがハングする理由はわかりません。デバッグモードでも、値を返すことなく、行 (実行中の行を示します) を継続的に実行しています。これは以下の私のコードです。非常に面倒で、応答値を取得するために多くの方法を試しています。
byte dataSmall[] = {0x00, 0x43, 0x60, 0x00, 0x02, 0x00, 0x00, 0x08, 0x00, 0x20, 0x00, 0x01, 0x00, 0x00, (byte) 0xC0,
0x00, 0x00, 99, 0x00, 0x00, 0x00, 0x02, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31};
try {
Socket echoSocket = new Socket("IP Address", port number);
ObjectOutputStream os = new ObjectOutputStream(echoSocket.getOutputStream());
String responseLine;
Client client = new Client(echoSocket);
Thread reader = new Thread(client, "j8583-client");
PrintWriter pw = new PrintWriter(os, true);
reader.start();
os.writeObject(dataSmall);
os.flush();
ObjectInputStream ois = new ObjectInputStream(echoSocket.getInputStream());
//convert ObjectInputStream object to String
String message = (String) ois.readObject(); // this is the continuous execution
System.out.println(message);
System.out.println("waiting for response");
BufferedReader in = new BufferedReader(new InputStreamReader(
echoSocket.getInputStream()));
responseLine = in.readLine().toCharArray().toString();
System.out.println("still waiting for response");
System.out.println(responseLine);
os.close();
in.close();
echoSocket.close();
client.stop();
reader.interrupt();
私は.readObject()と.readLine () を試して、うまくいけば応答出力を取得し、両方とも同じ問題を実行しました。終わりのない実行。残念ながら、私はこれにどのようにアプローチすべきかについてのアイデアがありません。テスト ホストから応答を受け取ることは非常に重要です。だから私はあなたたちが与えることができるどんな助けにも感謝します. 前もって感謝します。