首页 > 技术文章 > UDP广播

cfans1993 2017-03-22 09:58 原文

测试准备

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;
}

推荐阅读