linux C UDP 组播 发送
时间: 2023-08-16 07:07:10 浏览: 151
以下是一个简单的Linux C语言程序实现UDP组播发送的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#define PORT 6666
#define GROUP "239.0.0.1"
int main(int argc, char *argv[]) {
int sockfd;
struct sockaddr_in addr;
char msg[1024];
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd < 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);
while (1) {
printf("Enter message: ");
fgets(msg, sizeof(msg), stdin);
int n = sendto(sockfd, msg, strlen(msg), 0, (struct sockaddr *)&addr, sizeof(addr));
if (n < 0) {
perror("sendto");
exit(1);
}
}
close(sockfd);
return 0;
}
```
该程序使用socket API创建一个UDP Socket,并将其绑定到组播组的地址和端口。然后使用sendto API将用户从stdin输入的数据发送到组播组。
使用该程序需要在运行前先加入组播组,可以使用以下命令加入组播组:
```
sudo route add -net 224.0.0.0 netmask 240.0.0.0 eth0
```
其中,eth0为网卡名称。
注意:运行该程序需要使用root权限。
阅读全文