Linux下的广播程序

        最近需要用到网络编程中的广播程序,在网上找了下,亲测可用。

客户端:

 1 #include <stdio.h>
 2 #include <arpa/inet.h>
 3 #include <string.h>
 4 #include <sys/ioctl.h>
 5 #include <net/if.h>
 6 #include <unistd.h>
 7 
 8 
 9 int main(void)
10 {
11     struct sockaddr_in all;
12     int fd;
13     //广播消息
14     char buff[]="this is a broadcast message";
15     int so_boradcast=1;
16 
17     //IPv4 UDP
18     fd=socket(AF_INET,SOCK_DGRAM,0);
19     //广播地址,用ifconfig查看得到
20     all.sin_addr.s_addr=inet_addr("192.168.1.255");
21     all.sin_family=AF_INET;
22     //端口号
23     all.sin_port=htons(8888);
24     //设置socket为广播
25     setsockopt(fd,SOL_SOCKET,SO_BROADCAST,&so_boradcast,sizeof(so_boradcast));
26 
27     while(1)
28     {
29         //广播
30         sendto(fd,buff,strlen(buff),0,(struct sockaddr *)&all,sizeof(all));
31         //延时1秒
32         sleep(1);
33     }
34     return 0;
35 }

服务器端:

 1 #include <stdio.h>
 2 #include <arpa/inet.h>
 3 #include <stdlib.h>
 4 #include <unistd.h>
 5 
 6 int main(int argc,char *argv[])
 7 {
 8     int fd;
 9     struct sockaddr_in server;
10     struct sockaddr_in client;
11     int status;
12 
13     //IPv4 UDP
14     fd=socket(AF_INET,SOCK_DGRAM,0);
15     //端口号
16     server.sin_port=htons(8888);
17     server.sin_addr.s_addr=INADDR_ANY;
18     server.sin_family=AF_INET;
19 
20     //绑定地址
21     status=bind(fd,(struct sockaddr *)&server,sizeof(struct sockaddr));
22     if(status<0)
23     {
24         printf(" bind() error\n");
25         exit(1);
26     }
27     //接收Buffer
28     char buff[1024];
29     socklen_t len=sizeof(struct sockaddr);
30 
31     while(1)
32     {
33         //接收
34         recvfrom(fd,buff,1024,0,(struct sockaddr *)&client,&len);
35         //打印接收到的信息
36         printf("%s\n",buff);
37     }
38 
39     return 0;
40 }

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值