1)我要写一个局域网内传输文件的系统,文件4k左右,又要保证速度和可靠性,局域网内机子也不是很多,30或40多台,想问一下用udp好还是tcp好?
2)udp是不可靠的传输但可以自己在应用层加上可靠传输机制,tcp就是速度可能慢点。不知道udp加上可靠传输机制是不是速度和tcp也就差不多了?
3)还有tcp保持长连接是不是很耗系统资源?如果链路中长时间没有数据,tcp链路会自动断掉吗?是不是每两个小时,tcp自动探测一次,发现对方关闭,则断开连接?还要自己在应用层写heartbeat主动检测?谢谢各位大虾~~(^_^)

解决方案 »

  1.   

    局域网丢包率几乎为0,可以考虑用UDP
    不过局域网下的TCP速度也不慢,可以把缓冲区设置的大点,几乎可以接近网卡速度
      

  2.   

    tcp吧,
    文件一般都是tcp,虽说是局域网
      

  3.   

    文件小,并且又是局域网,
    如果LZ是频繁的发送文件的话
    建议用UDP
      

  4.   

    “3)还有tcp保持长连接是不是很耗系统资源?如果链路中长时间没有数据,tcp链路会自动断掉吗?是不是每两个小时,tcp自动探测一次,发现对方关闭,则断开连接?还要自己在应用层写heartbeat主动检测?”TCP会不会自动检测我不太清楚
    对于TCP的长连接,最好还是互发心跳包
    这个也不难实现吧~~
      

  5.   

    tcp,实现快,效率并不比udp差多少
    udp,不可靠,自己处理tcp窗口,重发,问题是,这些都实现了,能保证比tcp还快吗?无论从开发效率还是运行效率都是tcp最好
      

  6.   

    文件4k左右,又要保证速度和可靠性4K左右的文件已经不小了,程序优化下,传输速度几乎上可以达到10MB/S也就是网卡的速度了。
    所以速度问题几乎上可以无视之。
    你要可靠性,UDP当然保证不了。如果UDP能保证可靠性,速度又快那还要TCP做什么?
      

  7.   

    可以用UDP
    但是也要做一些保护
      

  8.   

    现有的TFTP协议,专用局域网内传输小文件,TFTP是基于UDP的,上网找找资料吧,用TCP对客户端和服务器端的开销比UDP大多了,但要注意拥塞控制等等TCP层负责实现了东东