我Socket programming
最近收到的这个奇怪的问题。我了解 Socket 可用于 aclient
与host
. 这个项目ISO8583
也需要。我已经有了一个工作代码,我正在修改以在我自己的测试主机上工作。
一切都很好,我的代码实际上可以工作,但我面临的一个问题是我根本没有得到任何回应。从我的计算机发送到主机的请求有效。主机显示正确的消息并将响应发送回我的计算机。但我不知道为什么那时我的应用程序会挂在那里。即使在调试模式下,它也会连续执行该行(我将向您展示它执行哪一行)而不返回任何值。这是我下面的代码。这很混乱,我正在尝试很多方法来尝试获得响应值。
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()希望获得响应输出并且都执行相同的问题。执行无止境。不幸的是,我对如何处理这个问题一无所知。从我的测试主机那里得到响应是非常重要的。所以我很感激你们可以提供的任何帮助。提前致谢。