2

サーバーから送信されたマルチキャストパケットを受信できません。tcpdumpを介して受信されているパケットを確認できました。誰かが私がここで間違っていることを教えてくれませんか。ありがとう。

struct ipv6_mreq mreq;
struct sockaddr_in6 servaddr;

sock = socket(AF_INET6,SOCK_DGRAM,0);

servaddr.sin6_family = AF_INET6;
servaddr.sin6_port = htons(61624);
servaddr.sin6_addr = in6addr_any;

inet_pton(AF_INET6,"ff38:40:2001::1",&mreq.ipv6mr_multiaddr);

mreq.ipv6mr_interface = 0;
setsockopt(sock,IPPROTO_IPV6,IPV6_JOIN_GROUP, &mreq,sizeof(mreq));
bind(sock,(struct sockaddr *)&servaddr,sizeof(servaddr));
/* using poll to receive data */
4

1 に答える 1

1

ゼロは無効「カーネルさん、私のために1つ選択してください」というインターフェイスインデックスになっています。これは機能しません。おそらく、ルーティングテーブルに特定のマルチキャストグループに一致する明示的なエントリがなく、デフォルトルートが別のインターフェイスを経由するためです。

インターフェイス名を解決し、のメンバーにif_nametoindex(3)保存するために使用します。ipv6mr_interfacestruct ipv6_mreq

于 2012-11-06T13:08:53.117 に答える