我和别的公司做TCP对接 我这边是客户端
他文档中有上面一句话
我的理解是 先将 string 转换成 UTF8String 在将 UTF8String 赋值给 byte数组
但是信息是错误的 是不是我理解错误了
我的代码如下
var LoginInfo: string;
temp1: UTF8String;
retuInfo, count: Integer;
pass: MD5Digest;
info: array of Byte;
readarr: array[0..254] of Byte;
begin
//DlSocketProxy.connectServer;
try
pass := MD5String(serverPWD);
temp1 := MD5Print(pass);
//要发送的字符串
LoginInfo := '1,' + serverID + ',' + FormatDateTime('yyyymmddhhmmss', Now) + ',' + temp1;
count := Length(LoginInfo);
//转化成 UTF8String
temp1 := UTF8Encode(LoginInfo);
SetLength(info, count + 2);
//转化成byte数组
Move(temp1[1], info[2], count);
retuInfo := Length(info);
//添加描述字符 第一个字节为0 第二个字节为 数据原始长度
info[0] := 0;
info[1] := retuInfo - 2;
except
end;
end;
8 个解决方案
#1
理解应该没问题
服务端单位有没有提供DEMO或技术支持,这个最好问一下
附加的两个字节描述符有没有问题?
服务端单位有没有提供DEMO或技术支持,这个最好问一下
附加的两个字节描述符有没有问题?
#2
问下服务器开发公司不就知道了,省得自己瞎猜,费时又费力!若真不是这样,那岂不是浪费时间?
#3
我刚才也在考虑是否是后面的 描述字节的问题 我确认一下
#4
按你的代码 info[1] 直接等于count不就行了?
而且这句好像不对吧
Move(temp1[1], info[2], count);
count是ansi字符串的长度而utf8英文数字1字节,其他特殊字符包括汉字等占2~4不等,那么你这种赋值方法肯定会有隐患
而且以前版本的delphi UTF8Encode函数有bug对于单字节中英文混排的转换会出现乱码
而且这句好像不对吧
Move(temp1[1], info[2], count);
count是ansi字符串的长度而utf8英文数字1字节,其他特殊字符包括汉字等占2~4不等,那么你这种赋值方法肯定会有隐患
而且以前版本的delphi UTF8Encode函数有bug对于单字节中英文混排的转换会出现乱码
#5
更正是单字赋汉字和中英文混排
#6
没有中文
#7
叫服务端提供DEMO不就好了,提供这种服务连接的都会有DEMO
#8
服务商现在很牛 没有任何demo
#1
理解应该没问题
服务端单位有没有提供DEMO或技术支持,这个最好问一下
附加的两个字节描述符有没有问题?
服务端单位有没有提供DEMO或技术支持,这个最好问一下
附加的两个字节描述符有没有问题?
#2
问下服务器开发公司不就知道了,省得自己瞎猜,费时又费力!若真不是这样,那岂不是浪费时间?
#3
我刚才也在考虑是否是后面的 描述字节的问题 我确认一下
#4
按你的代码 info[1] 直接等于count不就行了?
而且这句好像不对吧
Move(temp1[1], info[2], count);
count是ansi字符串的长度而utf8英文数字1字节,其他特殊字符包括汉字等占2~4不等,那么你这种赋值方法肯定会有隐患
而且以前版本的delphi UTF8Encode函数有bug对于单字节中英文混排的转换会出现乱码
而且这句好像不对吧
Move(temp1[1], info[2], count);
count是ansi字符串的长度而utf8英文数字1字节,其他特殊字符包括汉字等占2~4不等,那么你这种赋值方法肯定会有隐患
而且以前版本的delphi UTF8Encode函数有bug对于单字节中英文混排的转换会出现乱码
#5
更正是单字赋汉字和中英文混排
#6
没有中文
#7
叫服务端提供DEMO不就好了,提供这种服务连接的都会有DEMO
#8
服务商现在很牛 没有任何demo