吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 594|回复: 2
收起左侧

[求助] Socket响应消息的问题, 求解答

[复制链接]
sunwul 发表于 2021-12-21 11:44

TKMnt1.md.png
以上是抓包图

我方是服务端, 正常流程是当接收到客户端发送的消息报文时, 解析并处理, 处理完后响应消息给客户端, 以下是我方的接收与响应源代码

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();
                }
            }
        }
    }

现在的问题是, 我方能正常接收到客户端发来的消息, 但是我方响应的信息客户端无法收到. 通过抓包发现, 我方的消息其实是能发送到客户端的, 但是发送时机存在问题, 正常是我方响应后客户端立即就能接收到消息, 但现在却是客户端没有接收到消息,等待一段时间后,客户端发送需要断开连接的通知, 此时我方的消息才传递到客户端,导致整个流程无法按正常的功能设计来完成了

这种情况有没有朋友遇到过, 怎么解决呢

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

tyler998 发表于 2021-12-22 08:23
防火墙检查一下
 楼主| sunwul 发表于 2021-12-22 09:02

有几个报文是我请求客户端, 他们响应的, 这些是正常的, 也就是我主动请求,客户端响应这样是没问题的, 现在客户端主动请求, 我响应按理也没有问题. 如果是防火墙的问题应该会拦截整个请求吧
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 17:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表