linux下 IPv6组播(C++)
windows下IPv4 UDP通信(C++、MFC)
windows下IPv6 UDP通信(C++、MFC)
windows下IPv6 UDP组播(C++、MFC)
#include
#include
#include
#include
#include
int main()
{
//创建套接字
int fd = socket(AF_INET6, SOCK_DGRAM, 0);
//绑定本地网络信息
struct sockaddr_in6 address = {AF_INET6, htons(6060)};
bind(fd, (struct sockaddr*)&address, sizeof address);
//ipv6_mreq结构提供了用于IPv6地址的多播组的信息。
struct ipv6_mreq group;
//将接口索引指定为0,则使用默认的多播接口。
group.ipv6mr_interface = 0;
//IPv6组播组的地址。
inet_pton(AF_INET6, "ff02::1", &group.ipv6mr_multiaddr);
//将套接字加入到指定接口上提供的多播组。此选项仅对数据报和原始套接字有效(套接字类>型必须为SOCK_DGRAM或SOCK_RAW)。
setsockopt(fd, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP, &group, sizeof(group));
printf("等待接收信息!\n");
//接收数据
char buffer[128];
read(fd, buffer, sizeof(buffer));
printf("%s\n", buffer);
return 0;
}
#include
#include
#include
#include
#include
#include
int main()
{
// 创建套接字
int fd = socket(AF_INET6, SOCK_DGRAM, 0);
// ADDRESS
struct sockaddr_in6 address = {AF_INET6, htons(6060)};
//这个函数转换字符串到网络地址,第一个参数af是地址簇,第二个参数*src是来源地址,第三个参数* dst接收转换后的数据。
inet_pton(AF_INET6, "ff02::1", &address.sin6_addr);
//发送数据
char buffer[128];
strcpy(buffer, "");
sendto(fd, "hello world!", sizeof buffer, 0, (struct sockaddr*)&address, sizeof address);
return 0;
}