|
|
1
3
UDP堆栈比TCP堆栈简单得多。你可以很容易地从零开始自己写一个UDP协议栈,TCP有点难,可行但很难。TCP有内置的重试和其他东西,所以你不会直接失去UDP的可靠性,这是你用它做什么可以比较。UDP比TCP要快得多,这就是为什么它现在或曾经被用于视频和各种事情的原因。同样,像视频这样的东西可能会在这里或那里丢失一个数据包而不在乎。对于嵌入式UDP来说,小巧、快速等优点非常好。如果您使用的是其他人的库,那么UDP可能不会为您节省太多内存/闪存资源,它仍然会快一点。当您实现自己的UDP时,您可以节省相当多的内存,因为您可以走捷径。您可以只实现arp和udp,而不实现其他功能(虽然ping是有用的,但不知何故是痛苦的),并且您可以根据需要对arp/rarp做些什么来节省开支。您只能实现对感兴趣的数据包大小的支持。对数据包进行编号,让请求方发送两到三个数据包,并对每个请求进行响应,可以大大减少丢失数据包的问题。将数据包的大小保持在很小的范围内,既有助于解决嵌入式资源问题,又可以避免任何mtu或其他问题。为简单起见,您甚至可以强制指定特定的数据包长度。 我总是用另一种方式问这个问题,使用TCP我能得到什么。有些时候,它是有用的,嵌入式,桌面或服务器,虽然我仍然问这个问题,每次都必须证明使用TCP超过UDP否则我不会使用它。 |
|
|
2
1
您获得了多播,但失去了可靠性。 |
|
3
0
您可以获得代码空间、数据内存和确定性。 重新组装一个TCP流需要相当大的内存,除非您想NAK每个不正常的数据包。他们从来没有保证会井然有序。。。。
|
|
|
JeffreyH · 需要解释InvenSenses运动驱动程序 8 年前 |
|
|
gotti123 · 在MCU上查找Pin 8 年前 |
|
|
frank_010 · 在32位字存储器中连续读取3个字节 8 年前 |
|
|
LOSnel · 干扰irq将我从睡眠模式唤醒 8 年前 |
|
|
Juliano · ili9341不处理STM32f4发现 8 年前 |
|
|
yun · USB音频缓冲区欠载 8 年前 |
|
|
puzzled · 全球结构不起作用[关闭] 8 年前 |
|
|
Aimal · Elf十六进制表示法 8 年前 |
|
|
girikks · 结构值未在主源文件中更新 8 年前 |
|
|
user8235882 · 未在操作系统C中执行的for循环 8 年前 |