数据传输问题
我最近搞一个c/s项目,要用TCP协议传送数据,当数据量比较大的时候(几M左右),客户端等待数据的时间就会比较长。通过网速看出,发送的过程中网速时快时慢,所以想请教各位有什么办法可以提高网络带宽的利用率呢?我有一个想法,就是用多条线程同时查询,然后将数据分成多个部分再发送,这样能提高网络带宽的利用率吗? --------------------编程问答-------------------- 用线程跟你宽带没有关系 --------------------编程问答-------------------- 点对点 建议 压缩数据再传,效果明显. --------------------编程问答--------------------
回复2楼,我已经是将它压缩了,但还是有几M大小
下面是我的压缩方法,求指点:
--------------------编程问答-------------------- 如果用winrar压缩这些数据与你的GZip压缩差不多的话 就没必要换压缩方式.否则可以换个.
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;
}
如果局域网tcp网速时快时慢,估计是有其他机器占用带宽,主要是网络传输设备Qos的管理,
软件这优化的作用不如设置网络设备.
如果网络传输设备无法控制,点对点,多线程和单线程tcp发送区别不大,就好象单线程200KB,
3个线程可能就变为每线程66KB.可以改用udp发送看能否提高网络传输效率,但要自己加入丢包控制和
包重组.
补充:.NET技术 , C#