日期:2014-05-17  浏览次数:21833 次

将一个大的byte[]数组拆分多个byte数组
每次发送一个4KB的包,如果byte[]较大,则会拆分为多个包,下面的循环不会写了,我用的是.net2.0的程序,在网上搜索到的都是文件传输如:http://www.cnblogs.com/chenxizhang/archive/2009/06/29/1513445.html 单这个不符合我的程序。分完之后,我还要合并的。

byte[] data  
int totalLen = data.Length;
byte[] fileblock = new byte[4096];
int temp = totalLen / 4096;
for (int i = 0; i < temp; i++)
{
   fileblock = new byte[4096];
   Array.Copy(data, i, fileblock, 0, data.Length - 4096);
}

下面是我在其他地方搜索到的一段代码http://bbs.csdn.net/topics/330162599

var result = tm.Aggregate(new List<List<byte>>(), (container, x) =>
    {
        if (container.Count == 0 || x == 94)
            container.Add(new List<byte>());
        else
            container.Last().Add(x);
        return container;
    })
    .Select(lst => lst.ToArray());



.net2.0

------解决方案--------------------
TCP会自动拆分的,UDP应该1024字节一个包才对。
------解决方案--------------------
给Socket自动来做不就得了
------解决方案--------------------
引用:
 public void Send ( Socket handler, byte[] data )
        {
            if (handler != null && handler.Connected)
            {
                try
                {
                    handler.Send(data);
                }
                catch
                {
                }
            }
        }

这个data数据太大,在客户端接收的时候很慢哦,导致界面上显示也很慢。
由于data太大导致从服务器发送数据到客户端很慢。不知道大家有没有解决的方法哦。

界面显示不是等接收完之后再做?数据大导致速度慢这是不可避免的。
------解决方案--------------------