#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/udp.h>
udp_socket = socket(AF_INET, SOCK_DGRAM, 0);
当我使用UDP套接字时,我是否仅接收有效载荷或UDP报头?
以下是与您的问题相关的文档中的评论:
recv()函数应从连接模式或无连接模式套接字。通常与连接的插座一起使用因为它不允许应用程序检索源接收数据的地址。
(重点是我的)
read more here ...
编辑(以回复评论中的问题。)
_...您不能使用IPPROTO_UDP创建原始套接字并操纵UDP标头;对于TCP同样如此。操纵IP标头以及TCP或UDP标头(或封装在其中的任何其他协议)IP),则必须将IP_HDRINCL套接字选项与原始套接字一起使用。_
读取more on the topic ...