好友
阅读权限10
听众
最后登录1970-1-1
|
以上是抓包图
我方是服务端, 正常流程是当接收到客户端发送的消息报文时, 解析并处理, 处理完后响应消息给客户端, 以下是我方的接收与响应源代码
private void onAndSendMessage(Socket socket) {
byte[] bytes = new byte[1024];
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();
}
}
}
}
现在的问题是, 我方能正常接收到客户端发来的消息, 但是我方响应的信息客户端无法收到. 通过抓包发现, 我方的消息其实是能发送到客户端的, 但是发送时机存在问题, 正常是我方响应后客户端立即就能接收到消息, 但现在却是客户端没有接收到消息,等待一段时间后,客户端发送需要断开连接的通知, 此时我方的消息才传递到客户端,导致整个流程无法按正常的功能设计来完成了
这种情况有没有朋友遇到过, 怎么解决呢
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|