Socket响应消息的问题, 求解答
[!(https://s4.ax1x.com/2021/12/21/TKMnt1.md.png)](https://imgtu.com/i/TKMnt1)以上是抓包图
----
**我方是服务端, 正常流程是当接收到客户端发送的消息报文时, 解析并处理, 处理完后响应消息给客户端, 以下是我方的接收与响应源代码**
```java
private void onAndSendMessage(Socket socket) {
byte[] bytes = new byte;
int len;
try {
// 获取输入流,建立缓冲区进行读取
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
StringBuilder sb = new StringBuilder();
while ((len = inputStream.read(bytes)) != -1) {
sb.append(new String(bytes, 0, len, "GBK"));
}
socket.shutdownInput();
logger.info("接收消息:{}", sb.toString());
// 处理逻辑,处理完客户端发来的消息后返回处理结果
String request = payConfirmations(sb.toString());
byte[] sendBytes = request.getBytes("GBK");
outputStream.write(sendBytes);
outputStream.flush();
socket.shutdownOutput();
logger.info("响应消息:{}", request);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (socket != null) {
try {
socket.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
}
```
**现在的问题是, 我方能正常接收到客户端发来的消息, 但是我方响应的信息客户端无法收到. 通过抓包发现, 我方的消息其实是能发送到客户端的, 但是发送时机存在问题, 正常是我方响应后客户端立即就能接收到消息, 但现在却是客户端没有接收到消息,等待一段时间后,客户端发送需要断开连接的通知, 此时我方的消息才传递到客户端,导致整个流程无法按正常的功能设计来完成了**
---
**这种情况有没有朋友遇到过, 怎么解决呢** 防火墙检查一下 tyler998 发表于 2021-12-22 08:23
防火墙检查一下
有几个报文是我请求客户端, 他们响应的, 这些是正常的, 也就是我主动请求,客户端响应这样是没问题的, 现在客户端主动请求, 我响应按理也没有问题. 如果是防火墙的问题应该会拦截整个请求吧
页:
[1]