byte[] readBuffer = new byte[1024];
                clSocket.Receive(readBuffer);
                if (readBuffer[0] == 0x40)
                {                    
                   for()
                     {}                   
                }TCP 方式,同步的工作模式 接受时,如何确定一次穿过来的有效数组大小呢? 接受数组大小是1024,,,但是不一定传来就是1024个字节填满了呀 比如上面 FOR 循环里,,就一个字节一个字节的取出来,转成字符串
  
 

解决方案 »

  1.   

    一般都是Length Type Data形式传输数据先发一个长度,可以是2个字节,也可以是4个字节
    接收方接收2个字节,或者4个字节,就知道这次发送包的长度。那么接下来就是接收该长度的数据就好了若是有安全性比较高的话,需要做个校验,避免人为修改包结构
    若是校验不过,则果断断开此次连接。
      

  2.   

    异步的时候
     Socket s = (Socket)ar.AsyncState;
                try
                {
                    int size = s.EndReceive(ar); 这样就可以得到本次有效的数据个数,,size就是啦 同步时,没有类似的么?