下面的代码是正确的:
唯一错误的是用于多播的地址。
就像Jeremy所说的那样, ff0e ::不正确,我改用ff12 :: feed:a:dead:beef可以正常工作 。
使用if_nameindex()可以获得可用接口的名称和索引。
更新:我试图删除一些代码,看看没有它是否可以工作,我设法做到了:
服务器:
// OPENint fd = socket(AF_INET6, SOCK_DGRAM, 0);// BINDstruct sockaddr_in6 address = {AF_INET6, htons(4321)};bind(fd, (struct sockaddr*)&address, sizeof address);// JOIN MEMBERSHIPstruct ipv6_mreq group;group.ipv6mr_interface = 0;inet_pton(AF_INET6, "ff12::1234", &group.ipv6mr_multiaddr);setsockopt(fd, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP, &group, sizeof group);// READchar buffer[128];read(fd, buffer, sizeof buffer);客户:
// OPENint fd = socket(AF_INET6, SOCK_DGRAM, 0);// ADDRESSstruct sockaddr_in6 address = {AF_INET6, htons(4321)};inet_pton(AF_INET6, "ff12::1234", &address.sin6_addr);// SEND TOchar buffer[128];strcpy(buffer, "hello world!");sendto(fd, buffer, sizeof buffer, 0, (struct sockaddr*)&address, sizeof address);


