udp和tcp最大的区别,udp协议的性能要优于tcp
主要是缓冲空间。假设你正在发送一个10MB/秒的常量,而你只能消耗5MB/秒,操作系统和网络堆栈跟不上,所以它会丢弃数据包-这应该是相当明显的。(这自然不同于提供流量控制和重传来处理这种情况的TCP).
即使您正常情况下一直在消耗数据,也可能会有一小段时间您没有这样做。例如,垃圾收集器启动,操作系统决定安排另一个进程而不是您的用户0.5秒,等等,系统将丢弃数据包。
这可以扩展到两者之间的任何网络设备。如果你运行在一个网络上,而不仅仅是本地,一个以太网交换机,路由器等。如果队列已满,也会丢弃数据包(例如,您正在通过100 MB/秒的以太网交换机发送10MB/秒的流,而在午夜的几秒钟内,其他人试图通过相同的路径以100兆字节/秒的速度传输,一些数据包将会丢失。)
尝试增加套接字缓冲区的大小,通常您也必须在操作系统级别上增加。
(例如,在Linux操作系统上,默认的套接字缓冲区大小通常只有128k或更小,这使得暂停数据处理的空间非常小,您可以通过设置sysctl net.core.wmem_max、net.core.wmem_default、net.core.rmem_max、net.core.rmem_default来尝试增加它们)
http://堆栈溢出。com/questions/47903/UDP-vs-TCP到底有多快
http://堆栈溢出。com/questions/11994086/receiving-real-time-GPS-data-via-UDP