do
{
i = s.Receive(result, s.Available > result.Length ? result.Length : s.Available, SocketFlags.None);
fs.Write(result, 0, i);
}
  while(s.Available > 0);
如果在最后一行处加一断点,这段代码就能正常运行,但若不加,收到的文件就会不全.有哪位高手知道原因吗?

解决方案 »

  1.   

    ..晕倒..Socket 每次接受的数据是有限的..不能大于4K..最后一行处加一断点就等于让Socket多次接受了..因此文件会全...试试SLEEP函数...不过这不是好的解决方案
      

  2.   

    不要想一次把所有的信息都收到,假如传输100M的文件呢,你还会把缓冲区设为100M么,1000M呢...
    既然不能一次收齐,那么就该设置结束字符或者其它的方法增加标识,知道数据流中的开始、内容、结束等