[英]HTTP/2 client - associate response to request - can rely on stream id?
[英]Client program response with http request
更新:感谢@MartinFrank 的想法,我在结果中添加了 http 标头,并且它有效。
HTTP/1.1 200 正常
内容类型:文本/html
内容长度:result.length()
我正在开发一个客户端程序来处理 Web 应用程序。 Web 服务器应用程序将向客户端发送“获取”请求。 然后客户端程序将开始侦听与秤设备连接的 COM 端口,并将结果权重作为字符串返回给 Web 服务器应用程序。
我尝试使用 ARC 客户端发送请求来测试程序
系统能够打印
侦听端口 8083 上的连接....
刚刚连接到 /0:0:0:0:0:0:0:1:50346
获取/测试 HTTP/1.1
主机:本地主机:8083
结果 ??? 3 741g
但是请求一直挂在请求阶段,没有响应结果,如下图:
从客户端程序获得正确响应的任何想法? 谢谢您的帮助。
static public void main(String[] args)
{
ServerSocket server;
try {
server = new ServerSocket(8083);
System.out.println("Listening for connection on port 8083 ....");
while (true) {
Socket clientSocket = server.accept();
System.out.println("Just connected to " + clientSocket.getRemoteSocketAddress());
InputStreamReader isr = new InputStreamReader(clientSocket.getInputStream());
BufferedReader reader = new BufferedReader(isr);
String line = reader.readLine();
while (!line.isEmpty()) {
System.out.println(line);
line = reader.readLine();
}
String result = openConnection();.//listen to COM port and return weight result.
var pw = new PrintWriter(clientSocket.getOutputStream(), true);
System.out.print(" result ??? "+result);
pw.println(result);
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static String openConnection()
{
if(comPort == null || !comPort.isOpen()) {
comPort = SerialPort.getCommPorts()[0];
comPort.setComPortParameters(2400,7,SerialPort.ONE_STOP_BIT,SerialPort.EVEN_PARITY);
comPort.openPort();
System.out.println("COM port open: " + comPort.getDescriptivePortName());
}else {
System.out.println("COM port already open: " + comPort.getDescriptivePortName());
}
while(fullWeight == null) {
fullWeight = getWeight();
}
return fullWeight;
}
还尝试对结果进行硬编码并删除端口功能。
static public void main(String[] args)
{
....
//String result = openConnection();
String result = "OK";
var pw = new PrintWriter(clientSocket.getOutputStream(), true);
pw.println(result);
}
} catch (IOException e) {
e.printStackTrace();
}
}
我认为您需要刷新您的 PrintWriter 以有效地发送您的响应
pw.println(result);
pw.flush();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.