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

TCP 接受时,如何确定一次传来的有效位数呢?
byte[] readBuffer = new byte[1024];
  clSocket.Receive(readBuffer);
  if (readBuffer[0] == 0x40)
  {  
  for()
  {}  
  }

TCP 方式,同步的工作模式

 接受时,如何确定一次穿过来的有效数组大小呢?

 接受数组大小是1024,,,但是不一定传来就是1024个字节填满了呀

 比如上面 FOR 循环里,,就一个字节一个字节的取出来,转成字符串
 

 
 

------解决方案--------------------
一般都是Length Type Data形式传输数据

先发一个长度,可以是2个字节,也可以是4个字节
接收方接收2个字节,或者4个字节,就知道这次发送包的长度。那么接下来就是接收该长度的数据就好了

若是有安全性比较高的话,需要做个校验,避免人为修改包结构
若是校验不过,则果断断开此次连接。