日期:2014-05-18  浏览次数:20917 次

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