C++ Socket组播代码
时间: 2023-03-23 13:02:39 浏览: 79
以下是一个简单的C语言Socket组播示例代码,用于将数据从一个客户端发送到多个接收端:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define GROUP "239.0.0.1"
#define PORT 12345
int main(int argc, char *argv[]) {
struct sockaddr_in addr;
int fd, cnt;
char *message = "Hello, multicast!";
if ((fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) {
perror("socket");
exit(1);
}
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr(GROUP);
addr.sin_port = htons(PORT);
if ((cnt = sendto(fd, message, strlen(message), 0, (struct sockaddr *)&addr, sizeof(addr))) < 0) {
perror("sendto");
exit(1);
}
printf("Sent %d bytes to %s:%d\n", cnt, GROUP, PORT);
close(fd);
return 0;
}
```
该示例使用了C语言的Socket库,创建了一个UDP socket,将消息通过多播方式发送到指定的组播地址和端口。其中:
- `AF_INET` 指定了使用IPv4地址族
- `SOCK_DGRAM` 指定了使用数据报协议
- `IPPROTO_UDP` 指定了使用UDP协议
- `inet_addr()` 将组播地址字符串转换为网络字节序
- `sendto()` 将数据报发送到指定的地址和端口
- `close()` 关闭socket连接
注意,该示例只演示了发送端的代码,如果需要实现接收端,请参考相应的示例代码。同时,如果需要在多个网络接口上使用组播,请注意设置相应的接口地址。