SOCKET传输XML报文疑问

.Net技术 码拜 9年前 (2016-05-12) 1596次浏览
题设:
SOCKET传输XML报文,格式为LENGTH+VALUE
“目前我们的报文长度处理方式为报文头前4位:例,长度为5000的报文。将5000转为2进制形式,在头部补齐32位,转为4个字节固定在报文头,5000转为32位2进制后是00000000000000000001001110001000”
怎么实现?00000000000000000001001110001000只有4个字节的表示,本人始终理解不了。
解决方案

15

第一个例子本人错写了一个 Writer 名字写成了“文本方式”写入,这就使得解析端必须按照文本方式解析。
重新写一个“二进制方式写入”的例子

var st = new MemoryStream();
var sw = new BinaryWriter(st);
sw.Write(data.Length);
sw.Flush();
st.Position = 4;
st.Write(data, 0, data.Length);
var result = st.ToArray();
sw.Close();

5

不就是 Inte32 吗?
本来他只需说是 unsigned long 类型就可以了,但是现在 64位 兼容系统多了起来,仅这样说就容易产生误解
例如 C# 中 long 对应的是 Int64(8个字节),而低端环境是不能直接处理 64位 整数的
所以,为了维持协议的稳定性,就做出了那个绕口的说明

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明SOCKET传输XML报文疑问
喜欢 (0)
[1034331897@qq.com]
分享 (0)