测试准备
UDP广播常用于局域网内, 一次性给局域网内的所有主机发送消息
如果只有一台电脑, 可以在手机里安装一个UDP接收端app
注: 如果linux与windows机子互相ping不通, 可能是杀毒软件的原因
实例
与普通UDP client相比, 有两个不同:
1.目标地址为xxx.xxx.xxx.255
2.显示设置广播, 即setsockopt
#include <unistd.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <strings.h>
#include <string.h>
#define SERV_PORT 5555
int main(int argc,char *argv[]){
int sockfd;
struct sockaddr_in servaddr;
sockfd=socket(AF_INET,SOCK_DGRAM,0);
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=inet_addr("192.168.1.255");
servaddr.sin_port=htons(SERV_PORT);
int on=1;
setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&on,sizeof(on));
while(1){
sendto(sockfd,"hello",strlen("hello"),0,(struct sockaddr *)&servaddr,sizeof(servaddr));
sleep(3);
}
return 0;
}