我正在使用一些Layer-2 API编写UDP send / recv。 我可以收到包含我的UDP数据包的以太网帧。例如,我发送“hello”并获得以下以太网帧。
000f 5325 fb00 000f 5324 8c30 0800 4500
0022 0000 4000 4011 5b0c 0a80 657d 0a80
6542 c179 15b3 000e 46a2 3068 656c 6c6f
0000 0000 0000 0000 0000 0000
其中
000f 5325 fb00 : destination MAC
000f 5324 8c30 : source MAC
0800 : Ethernet type
....
68 656c 6c6f : "hello"
如果我使用不同的程序发送UDP数据包,则我的消息/有效负载(“hello”)的起始位会有所不同。
问题:如何提取有效负载?
我需要尽可能保持我的UDP协议实现,所以我最好用C语言编写它们。但是相关的库或系统函数仍然有用。
答案 0 :(得分:0)
您可以在Linux中使用POSIX Socket API。您可以创建UDP套接字,recvfrom()调用可以获得您的UDP有效负载。