我想多UDP數據包發送到使用多播嵌入式Linux設備。設備上的內核版本是:可以發送但是無法接收組播數據報文
/ # uname -r
2.6.24.6
用於測試目的我使用的代碼中發現here(增加了幾個頭,改變了IP地址匹配單元的IP地址)
問題是相同組播組(Windows PC)中的其他設備能夠接收數據,而單元不是。我在某處讀到必須修改rp_filter的值。我嘗試了所有的選擇,但無濟於事。
我可以爲沒有任何問題的服務器運行的單位。但它根本沒有收到。
請注意,netstat -g
不起作用。
/ # netstat -g
netstat: invalid option -- g
BusyBox v1.11.2() multi-call binary
Usage: netstat [-laentuwxr]
Display networking information
Options:
-l Display listening server sockets
-a Display all sockets (default: connected)
-e Display other/more information
-n Don't resolve names
-t Tcp sockets
-u Udp sockets
-w Raw sockets
-x Unix sockets
-r Display routing table
因此我無法檢查組成員身份。
P.S:我跑了相同的節目(從上面的鏈接代碼)Linux的PC上,它工作正常。所以代碼不是問題。
我設法檢查/ proc /網/ IGMP和它說的eth0是E2010101成員 - > 226.1.1.1這是正確的。但是,我仍然沒有收到任何數據報 –
您不需要netstat -g支持來查詢組成員資格。如果你將netstat -gn放在一個盒子上,你會看到netstat只是從/ proc中讀取這些信息。因此,讀取/ proc/net/igmp(和/ proc/net/igmp6 for ipv6)將顯示當前組成員資格。 (請注意,我的(x86)盒組對於224.0.0.1是010000E0,這意味着您可能需要切換一些字節順序)。 –
@ amo-ej1:yupp我想通了。檢查我以前的評論。但仍然無法接收任何數據報。 –