【问题标题】:Problems in receiving fragmented UDP packets in C在C中接收碎片UDP数据包的问题
【发布时间】:2014-02-05 09:42:00
【问题描述】:

我正在使用 2 个不同的 C 程序来接收分段数据包,其中一个使用定义如下的原始套接字:

_socket0 = socket( PF_PACKET, SOCK_RAW, htons(ETH_P_ALL) );

使用如下定义的 UDP 套接字:

_socket0=socket(AF_INET, SOCK_DGRAM, 0);

第一个工作正常,第二个不工作,我什么都看不到。 谁能告诉我原因?

【问题讨论】:

    标签: c udp


    【解决方案1】:

    UDP 数据包的片段不是 UDP 数据包,因此不会传递到 UDP 套接字。 UDP 套接字用于读取/写入整个 UDP 数据包,而不是携带一个片段的 IP 数据包。

    【讨论】:

    • 这很清楚,但据我所知,当 PC 在将数据包发送到新层(UDP 层)之前接收到碎片数据包时,它会重新组合碎片以获得单个更大的数据包。所以问题可能是为什么 PC 不重新组合数据包。
    • 实际上,首先我不明白为什么我也无法接收单个 UDP 数据包,这是原来的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    相关资源
    最近更新 更多