首页 > 代码库 > UDP编程之二
UDP编程之二
广播模型
broadcast.c
1 #include <apue.h> 2 3 #define PORT 8088 4 5 int main(int argc,char **argv) 6 { 7 if(argc!=2) 8 { 9 printf("%s <msg>\n",argv[0]);10 exit(0);11 }12 13 int sockfd;14 if((sockfd = socket(AF_INET,SOCK_DGRAM,0))<0)15 ERR("socket failed");16 17 //设置允许广播18 int val = 1;19 if(setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&val,sizeof(val))<0)20 ERR("setsockopt failed");21 22 struct sockaddr_in peer;23 CLEAR(peer);24 peer.sin_family = AF_INET;25 peer.sin_port = htons(PORT);26 inet_pton(AF_INET,"192.168.5.255",&peer.sin_addr);27 28 if(sendto(sockfd,argv[1],strlen(argv[1]),0,(struct sockaddr*)&peer,sizeof(peer))<0)29 ERR("send failed");30 31 close(sockfd);32 return 0;33 }
recv.c
#include <apue.h>#define PORT 8088int main(int argc,char **argv){ int sockfd; if((sockfd = socket(AF_INET,SOCK_DGRAM,0))<0) ERR("socket failed"); struct sockaddr_in ipv4; CLEAR(ipv4); ipv4.sin_family = AF_INET; ipv4.sin_port = htons(PORT); ipv4.sin_addr.s_addr = htonl(INADDR_ANY); if(bind(sockfd,(struct sockaddr*)&ipv4,sizeof(ipv4))<0) ERR("bind failed"); int n; char buf[255]; while(1) { if((n = recvfrom(sockfd,buf,sizeof(buf),0,NULL,NULL))<0) ERR("recv failed"); buf[n] = 0; printf("%s\n",buf); } close(sockfd); return 0;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。