UDP广播

测试准备

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;
}
posted @ 2017-03-22 09:58  cfans1993  阅读(453)  评论(0编辑  收藏  举报