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

TCP发送数据,需要在应用层控制发送速度吗?如何控制?

TCP发送数据,需要在应用层控制发送速度吗?如何控制?
发现如果不控制速度,发送进程就没有了响应,
每发一个包后,就用Thread.Sleep(1) 一次,
这样可以,但是太慢了,若用Thread.Sleep(0);又不行了,
连发几个包后,发送语句半天没反应。

如何又快又好的发送文件?

谢谢了 --------------------编程问答-------------------- 不需要控制速度。

你的问题是“发送进程就没有了响应”,这说明你是用主进程同步模式发送,没发完就会没有响应,

可以改为异步模式,
或启动线程发送。
--------------------编程问答-------------------- 回楼上,是在新的进程中发送的
--------------------编程问答-------------------- 也就是说,每发一次,用上
  Thread.Sleep(0)和用Thread.Sleep(1)
前者看似不用等待,但是实际耗时更多,有时连接就断开了,
后者快一些,但不是最快,有什么办法更快些呢? --------------------编程问答-------------------- --------------------编程问答-------------------- 你说对了,这是windows精度的问题,windows精度是15毫秒,也就是thread.sleep(1)并不是延时1毫秒,而是15毫秒,1-15都按15来,sleep(0)等于没有,没办法的。
但你的限速设置很有问题,这么说吧,最低15毫秒一次,一秒钟就是66次,如果你想一秒发送100k吧,那100/66=1.5k,你可以设置成15毫秒发一次,每次发1.5k字节,这样就限速了。 --------------------编程问答-------------------- 巨简单。

搜索 BackgroundWorker 
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,