xml-socket接收报文读取不全

问题描述

socket接收报文读取不全

Constants.MSG_HEAD_LEN是报文头长度,是10个字符,值代表后面报文的长度。
程序实现是先读出报文头的值,然后根据它去读后面xml报文体的长度。
但是读出的报文体总是不全的,结果就报错:Error on line 1 of document : 在文档的元素内容中找到无效 XML 字符 (Unicode: 0x0)。

            // 接受响应
            in = socket.getInputStream();
            // 读取报头,获取报体长度
            byte[] head = new byte[Constants.MSG_HEAD_LEN];
            in.read(head);
            int length = Integer.parseInt(new String(head));
            // 读取报体并解密
            byte[] body = new byte[length];
            in.read(body);

解决方案

socket接收数据不全解决方案

解决方案二:

你是用函数recv来接收报文吗?是循环接收吗?

时间: 2024-11-03 13:13:20

xml-socket接收报文读取不全的相关文章

java socket 接收报文重复

问题描述 java socket 接收报文重复 我本地是client端做了一个java socket连接.但是有大部分服务器给我返回的数据是2段重复的数据是什么意思.例如 正常返回ABCD 但是服务器返回的是ABCDABCD服务器端开发说是我本地没有是长连接不是短连接,但是我本地每次请求以后都close啊. 解决方案 代码贴出来代码贴出来 解决方案二: 按你的描述,应该是服务器回复数据代码有问题,数据写入重复了吧.具体什么问题,应该检查下你的代码.

scoket tcp ip 报文-Java 的 Socket服务端客户端以tcp/ip协议发送接收报文

问题描述 Java 的 Socket服务端客户端以tcp/ip协议发送接收报文 代码谁有模板,比如给你一个login报文,logout报文!!急急急!!! 解决方案 Android Socket 编程(WIFI 和 ADB) 有了发送数据的功能,再发送文件还需要分包等协议. 解决方案二: 这个不知道是不是你要的答案, 解决方案三: http://blog.csdn.net/u013301192/article/details/46336719 解决方案四: 网页上的1楼回复应该对你有用,祝你好运

java socket 在linux环境接收报文失败

问题描述 java socket 在linux环境接收报文失败 新建了一个socket链接,windows环境下一切正常. 部署到LINUX环境下时,如果是简短的报文,服务端接收也是没问题的. 但是如果报文长度超过一定值(注:在windows下成功接收的报文), 在LINUX下却接收失败! 求解! 解决方案 检测socket是否断开 解决方案二: 能不能上代码看看,你给的信息还是太少了,不太好确定啊

java 接收报文 syslog 服务器的功能

问题描述 请问java接收报文(需要报文类型syslog)syslog服务器的功能怎么实现 解决方案 解决方案二:日志服务器,接收数据无脑写.协议层内网走udp,外网走tcp.http.jms.rmi.jmx.jndi.socket协议都可以.写文件用I/O,写数据库用jdbc.解决方案三:你的问题能再清晰一点吗?解决方案四:引用2楼huxiweng的回复: 你的问题能再清晰一点吗? 就是类似北塔的SYSlog分析解决方案五:北塔BTNM通过监听UDP514端口,接收指定IP地址发送来的SYSl

pop3-POP3邮件接收怎么读取想要的信件信体部分

问题描述 POP3邮件接收怎么读取想要的信件信体部分 下面是读取信件信体的一段代码,有些不太明白void CMailMessage::DecodeBody(){CString sCooked = """";LPTSTR szBad = ""rn..rn"";LPTSTR szGood = ""rn.rn"";int nPos;int nBadLength = strlen( szBad

java-mina2 关于客户端接收报文过长的问题

问题描述 mina2 关于客户端接收报文过长的问题 现在项目里面需要用到MINI 去调用其他公司的接口. 采用3DES 加密. 所以每次返回的报文很长. 没有办法正常接收. 请问各位大神, 对于这种问题应该如何处理. 解决方案 ~你所说的没法正常接受是接受不到,还是接受的数据有断包的现象

tcp连接-TCP连接时,服务端监听socket接收客户端连接后新创建的socket默认绑定的端口是监听端口吗?

问题描述 TCP连接时,服务端监听socket接收客户端连接后新创建的socket默认绑定的端口是监听端口吗? 比如用来监听连接的socket绑定23端口,服务端每接受一个连接都新开一个线程和客户端通信,并把新socket传递给新线程,是不是所有新创建的socket都是经过23端口和客户端通信? 解决方案 是的,都通过端口23进行通信 解决方案二: 都是监听端口,如果不是客户端就不能将数据发送到服务器 解决方案三: 23只是监听建立连接,后续数据交换走实际上端口

c# socket接收空包的问题

问题描述 c# socket接收空包的问题 我现在遇到一个socket切换通道的一个问题,一共2个socket通道,1个是长连接,另一个是用完后断开在去连接主socket,就是那个长连接的,在回到主通道的时候向服务器发送socket指令的时候收到空包,而服务器回包没有错,我这边就首次回到主通道发送socket指令有问题,后续都正常,求大神赐教这是神马问题.

我用SOCKET接收文件,为什么会出现着错误:由于系统缓冲区空间不足或列队已满,不能执行套接字上的操作

问题描述 我用SOCKET接收文件,为什么会出现着错误:由于系统缓冲区空间不足或列队已满,不能执行套接字上的操作程序下,发送方:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Net.Sockets;usingSystem