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#