当前位置:编程学习 > C#/ASP.NET >>

数据传输问题

我最近搞一个c/s项目,要用TCP协议传送数据,当数据量比较大的时候(几M左右),客户端等待数据的时间就会比较长。通过网速看出,发送的过程中网速时快时慢,所以想请教各位有什么办法可以提高网络带宽的利用率呢?

我有一个想法,就是用多条线程同时查询,然后将数据分成多个部分再发送,这样能提高网络带宽的利用率吗? --------------------编程问答-------------------- 用线程跟你宽带没有关系 --------------------编程问答-------------------- 点对点 建议 压缩数据再传,效果明显. --------------------编程问答--------------------
引用 2 楼 zdbb 的回复:
点对点 建议 压缩数据再传,效果明显.


回复2楼,我已经是将它压缩了,但还是有几M大小
下面是我的压缩方法,求指点:

public byte[] Compress(object obj)
        {
            MemoryStream mes = new MemoryStream();
            BinaryFormatter bf = new BinaryFormatter();
            bf.Serialize(mes, obj);
            byte[] unCmpData = mes.ToArray();
            mes.Close();
            mes.Dispose();

            MemoryStream ms = new MemoryStream();
            GZipStream gzs = new GZipStream(ms, CompressionMode.Compress, true);
            gzs.Write(unCmpData, 0, unCmpData.Length);
            gzs.Close();
            gzs.Dispose();
            byte[] cmpData = ms.ToArray();
            ms.Close();
            ms.Dispose();
            return cmpData;
        }
--------------------编程问答-------------------- 如果用winrar压缩这些数据与你的GZip压缩差不多的话 就没必要换压缩方式.否则可以换个.
如果局域网tcp网速时快时慢,估计是有其他机器占用带宽,主要是网络传输设备Qos的管理,
软件这优化的作用不如设置网络设备.
如果网络传输设备无法控制,点对点,多线程和单线程tcp发送区别不大,就好象单线程200KB,
3个线程可能就变为每线程66KB.可以改用udp发送看能否提高网络传输效率,但要自己加入丢包控制和
包重组.
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,