...
...
... //前面代码省略byte [] receivebytes = new byte [1024 ]; //这个1024是什么意思
int successReceiveBytes = clientSocket.Receive(receivebytes ); 
Receive (Byte[])方法:http://msdn.microsoft.com/zh-cn/library/8s4y8aff.aspx
MSDN的解释是:Receive方法的参数是Byte类型的数组,它是存储接收到的数据的位置。
我想问的是:new一个byte[]数组,字节数大小1024是自己指定的,如果接收的数据大于1024,岂不是丢失数据吗?

解决方案 »

  1.   

    List<byte> bs=new List<byte>();//无限长度的大容器
    int i;
    int successReceiveBytes=1024;//缓冲区大小,你喜欢多大就多大,一般不超过2000,因为记得一次发送数据的大小好像 1千45左右,可以发送多次
    byte [] receivebytes = new byte [1024 ]; //这个1024 同上
    while(receivebytes!=1024)
    {
    successReceiveBytes = clientSocket.Receive(receivebytes );//这个方法,你看看有没有重载,貌似有设置一次取多少的参数
    for(i=0;i<successReceiveBytes ;i++)//临时取的,有多少都导入大容器
    {
    bs.Add(receivebytes[i]);
    }
    }
    bs.ToArray();//你可能用的上 
    手写的,有错误见谅
      

  2.   

    有http://msdn.microsoft.com/zh-cn/library/ec8ybzs0.aspx这个就不用楼上的楼上的和C语言的指针接受那个,思路差不多
      

  3.   

    貌似只接受byte[]类型的 而byte[]又没法不初始化大小
    强烈关注泛型List<byte>是否能解决此问题,求教各位达人。
      

  4.   

    http://msdn.microsoft.com/zh-cn/library/ec8ybzs0.aspx
    果断打开这个链接
      

  5.   

    不会丢失,没有接受的数据会保存在 socket 的缓冲区里面,需要再次调用 receive 接受。
      

  6.   


    你的设置的是接受数据的缓冲区, 它跟 TCP 协议使用的缓冲区是两码事。 TCP 协议是面向链接的协议,它只会断线,不会丢失数据。
      

  7.   

    你如果能预测传送文件的大小的话,你可以定义一个容量大一点的byte数组,比如byte [] receivebytes = new byte [1024*1024]; 1M