%% 写入字符串
write_string(Bin,Str)->
L = byte_size(list_to_binary(Str)), %% 数据长度
<<Bin/binary,L:16,Str/binary>>.
错误写法,认为Str/binary会自动转换
改:
write_string(Bin,Str)->
StrBin = list_to_binary(Str),
L = byte_size(StrBin), %% 数据长度
<<Bin/binary,L:16,StrBin/binary>>.
客户端错误:
ArgumentOutOfRangeException: ArgRange_Array
Parameter name: count
查看代码发现在string value = Encoding.UTF8.GetString(mDataBuff, mPosition, count);报错。顿时明白编码问题,首先想到就是大小端问题,客户端有检查大小端,再回看服务端<<Bin/binary,L:16,StrBin/binary>>.这句L:16没有做转小端。L:16/little.
客户端:
1.成功解析基本的服务端发送的数据。
服务端:
1.在协议公共类pt里面添加读取object,byte,short,int,long功能
write_string(Bin,Str)->
L = byte_size(list_to_binary(Str)), %% 数据长度
<<Bin/binary,L:16,Str/binary>>.
错误写法,认为Str/binary会自动转换
改:
write_string(Bin,Str)->
StrBin = list_to_binary(Str),
L = byte_size(StrBin), %% 数据长度
<<Bin/binary,L:16,StrBin/binary>>.
客户端错误:
ArgumentOutOfRangeException: ArgRange_Array
Parameter name: count
查看代码发现在string value = Encoding.UTF8.GetString(mDataBuff, mPosition, count);报错。顿时明白编码问题,首先想到就是大小端问题,客户端有检查大小端,再回看服务端<<Bin/binary,L:16,StrBin/binary>>.这句L:16没有做转小端。L:16/little.
客户端:
1.成功解析基本的服务端发送的数据。
服务端:
1.在协议公共类pt里面添加读取object,byte,short,int,long功能
下步:
整理代码,重构。。。。