本帖最后由 u011350661 于 2013-07-09 11:31:35 编辑

解决方案 »

  1.   

    要看你接受的是什么,如果是F字符,你可以判断是否等于FFFFF,但如果接受的是二进制数据流F和字符F就完全是两回事了
      

  2.   


     if (b2[0]==0xFF&&b2[1]==0xFF&&b2[2]==0xFF) {        //如果找到3个FF  就开始找后面的!16!个字节单个的0会不会影响数据接收的格式??????  : 不会b2 包含着  b3的数据,  这边改下
      
    b3 = new byte[16];
     Buffer.BlockCopy(b2, 3, b3, 0, 16);
    byte[]  你这方法写的比较丑。
      

  3.   

    直接用数字0xFFFFFF判断就好了,别用Encoding .ASCII .GetString去转
      

  4.   


    我想问一下 ,用Receive方法接收后,数据是从字节数组里都拿出来了混在一起,还是把字节数组也接收了???
      

  5.   


    我要是单个引用 某一字节数据  应该怎么取出来啊??????以这段数据流为例
    FF FF FF 2 0 0 1D 3 0 1 0 0 0 0 0 0 0 0 0 40 
    b2[0]就是第一个 FF
    b2[18]就是最后一个  40(16进制,十进制的话就是4*16=64)
    都说是字节数组了,当然是数组形式了。
    只不过FF  1D这些都是16进制的数,0x1D代表10进制的29.
      Receive方法是接受当前Scoket连接中 传递过来的数据流。
        
      

  6.   


    我要是单个引用 某一字节数据  应该怎么取出来啊??????以这段数据流为例
    FF FF FF 2 0 0 1D 3 0 1 0 0 0 0 0 0 0 0 0 40 
    b2[0]就是第一个 FF
    b2[18]就是最后一个  40(16进制,十进制的话就是4*16=64)
    都说是字节数组了,当然是数组形式了。
    只不过FF  1D这些都是16进制的数,0x1D代表10进制的29.
      Receive方法是接受当前Scoket连接中 传递过来的数据流。
        
    那数据流是什么时候又变成byte数组的???Buffer.BlockCopy(b2, 3, b3, 0, 16); 这个方法是什么意思呢???是用b2先做判断好,还是直接一个大数组就一段数据后接收再判断好?????
      

  7.   

    接收的不可能是十六进制数,要么是字节,要么是16进制字符串,楼主概念还不清楚。
    字节的可能性大些,接收时最好一次性全部接收,再处理。
    byte[] buffer = new byte[19];
    int len = 0;
    while (true)
    {
        int r = socket1.Receive(buffer, len, buffer.Length - len, 0);
        if (r == 0) break; // 断线
        len += r;
        if (len < 19) continue; // 数据不足继续收
        if (buffer[0] == 0xff && buffer[1] == 0xff && buffer[2] == 0xff)
        {
        }
    }
      

  8.   

    是不是receive数据流后,把这些数据装在了byte数组里,就是receive方法的参数。
      

  9.   

    http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socket.receive(v=VS.80).aspx
       你最好用异步做,不然会堵塞线程的。
      
       你如果用抓包工具抓数据包,显示出来的是FF FF FF 02 00 00 1D 03 00 01 00 00 00 00 00 00 00 00 00 40 数据.
       但是你在VS里断点调试,就是十进制显示了,比如FF显示出来是255 其实都是一样的。因为说到底本身传输过来的都是字节流,这里可以显示成二进制,十进制,十六进制都可以。抓包工具只是为了看起来方便。所以转换成了16进制,如果不进行转换 FF 表示出来就是11111111(一个字节,8位),太不低碳了嘛。