读书人

socket得到的字符串和定义的字符串比对

发布时间: 2012-06-04 14:48:03 作者: rapoo

socket得到的字符串和定义的字符串比对不上
百度没人理,
还是来csdn吧。
有两个字符串:
一个是直接定义的:string signofend = "end";
另一个是socket接收到的:
Byte[] r_data = new Byte[64];
this.resock.Receive(r_data, r_data.Length, 0);//接受数据
string str = System.Text.Encoding.BigEndianUnicode.GetString(r_data);
网络接收到的字符串也是"end",
但是长度不一样,一个是3,一个是32。
怎么也不相等。将本地的字符串转换一下也不行,
我想着怎么才能比随上socket得到的字符串,
发送的时候是
Byte[] s_data=new Byte[64];
send = use.strread[i++];
s_data = System.Text.Encoding.BigEndianUnicode.GetBytes(send.ToCharArray());

[解决办法]
网络接收到的字符串 end 后面还有别的符号吧,你调试断点停到
string str = System.Text.Encoding.BigEndianUnicode.GetString(r_data);
这行,展开 r_data ,看看 第4个字节开始后面是什么东西
[解决办法]

探讨
后面缀着的是\0,
还有不知道为什么,
全部都是 \0\0\0\0\0\0\0\0\0\0\0\0
怎么去掉呢??

[解决办法]
获取你发送的字符串的长度 ,服务器截取长度字符串
[解决办法]
socket基于流传输的。所以你要通知发送端,你要发送多少字节的数据流,然后它就按照你说的大小进行接收就好了。

读书人网 >C#

热点推荐