首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

socket得到的字符串和定义的字符串比对不上,该怎么处理

2012-06-04 
socket得到的字符串和定义的字符串比对不上百度没人理,还是来csdn吧。有两个字符串:一个是直接定义的:strin

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基于流传输的。所以你要通知发送端,你要发送多少字节的数据流,然后它就按照你说的大小进行接收就好了。

热点排行