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

socket recieve
byte[] recievedata = new byte[Convert.ToInt32(lenth)];

  int rellen = 0;
  string rec=null;
  int j = 0;

  while (rellen < recievedata.Length)
  {

  int templen = 0;
  //Thread.Sleep(200);
  j++;
  templen = conn.Receive(recievedata);
  rellen = rellen + templen;
  rec = rec + Encoding.GetEncoding("gb2312").GetString(recievedata); 
   
  }

接受的时候,我让他睡一下就能够完全接受,如果不睡的话,上面的就不能完全接受,而且rellen达到希望接受数据个数字,但实质上接过来的数据却没有那样多,费解了都

------解决方案--------------------
tcp/ip是可信任的连接一般不会出现丢包现象
lz说的是小概率事件,以前win和unix传输遇到过。因为数据量过大在发送的时候就有可能造成接受端在处理的时候发送的数据已经超过缓冲区的大小从而造成阻赛或者抛出socketexception,所以如果只是保证发送成功的活可以在每发送一部分之后就sleep 一下,然后再发送 。
 

------解决方案--------------------
虽然现在软件开发的风气是滥了些,也不要随便睡啊!
------解决方案--------------------
探讨
虽然现在软件开发的风气是滥了些,也不要随便睡啊!

------解决方案--------------------
探讨

Receive需要时间的吧,还是sleep好吧