广播机制的CS模型实现

广播机制的cs模型实现如下:

  首先可以使用ifconfig命令查看自己所在网段的广播地址

server.c

 1 #include<stdio.h>
 2 #include<unistd.h>
 3 #include<stdlib.h>
 4 #include <strings.h>
 5 #include<string.h>
 6 #include<sys/socket.h>
 7 #include<arpa/inet.h>
 8 #include<net/if.h>
 9
10 #define SERVER_PORT 8000 //服务端端口无关紧要
11 #define MAXLINE 1500
12
13 #define BROADCAST_IP "192.168.23.255"//所在局域网的广播IP
14 #define CLIENT_PORT 9000 //客户端端口必须指定
15
16 int main(int argc,char* argv[])
17 {
18     int sockfd;
19     struct sockaddr_in servaddr,clieaddr;
20     char buf[MAXLINE];
21     //构造用于UDP通信的套接字
22     sockfd = socket(AF_INET,SOCK_DGRAM,0);
23
24     bzero(&servaddr,sizeof(servaddr));
25     servaddr.sin_family = AF_INET;               //IPv4
26     servaddr.sin_addr.s_addr = htonl(INADDR_ANY);//本地任意有效IP
27     servaddr.sin_port = htons(SERVER_PORT);
28
29     bind(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr));
30
31     int flag = 1;
32     setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&flag,sizeof(flag));
33
34     //构造client地址 IP+端口
35     bzero(&clieaddr,sizeof(clieaddr));
36     clieaddr.sin_family = AF_INET;
37     inet_pton(AF_INET,BROADCAST_IP,&clieaddr.sin_addr.s_addr);
38     clieaddr.sin_port = htons(CLIENT_PORT);
39
40     int i = 0;
41     while(1)
42     {
43         sprintf(buf,"服务端发送了广播%d 次\n",i++);
44         sendto(sockfd,buf,strlen(buf),0,(struct sockaddr*)&clieaddr,sizeof(clieaddr));
45         sleep(1);
46     }
47     close(sockfd);
48
49     return 0;
50 }

client.c

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<strings.h>
 4 #include<string.h>
 5 #include<sys/socket.h>
 6 #include<unistd.h>
 7 #include<sys/types.h>
 8 #include<arpa/inet.h>
 9
10 #define SERVER_PORT 8000
11 #define CLIENT_PORT 9000
12 #define MAXLINE 4096
13
14 int main(int argc,char* argv[])
15 {
16     struct sockaddr_in localaddr;
17     int confd;
18     ssize_t len;
19     char buf[MAXLINE];
20     //1.创建一个socket
21     confd = socket(AF_INET,SOCK_DGRAM,0);
22     //初始化本地地址
23     bzero(&localaddr,sizeof(localaddr));
24     localaddr.sin_family = AF_INET;
25     inet_pton(AF_INET,"0.0.0.0",&localaddr.sin_addr.s_addr);
26     localaddr.sin_port = htons(CLIENT_PORT);
27
28     int ret = bind(confd,(struct sockaddr*)&localaddr,sizeof(localaddr));
29     if(ret == 0)
30     {
31         printf("...bind ok...\n");
32     }
33     while(1)
34     {
35         len = recvfrom(confd,buf,sizeof(buf),0,NULL,0);
36         write(STDOUT_FILENO,buf,len);
37     }
38     close(confd);
39
40     return 0;
41 }

测试结果:

时间: 2024-10-07 05:02:23

广播机制的CS模型实现的相关文章

Android广播机制(转)

1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组件之间的消息通信: 4.不同app之间的组件之间消息通信: 5.Android系统在特定情况下与App之间的消息通

Android总结篇系列:Android广播机制

1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组件之间的消息通信: 4.不同app之间的组件之间消息通信: 5.Android系统在特定情况下与App之间的消息通

Android广播机制

1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组件之间的消息通信: 4.不同app之间的组件之间消息通信: 5.Android系统在特定情况下与App之间的消息通

Android广播机制剖析【android广播系列一】

广播是android四大组件之一,所以广播的重要性也是显而易见的,最近需要做个功能,需要对广播的机制深入了解,所以我就整理下思路.平时我们写代码的时候,广播只是用来通知机制的,不是用来通信机制,通信机制还是要用binder机制来实现.但是现在市场上的第三方app大部分都是滥用广播,用广播来监听一些事件来实现自启动或者后台启动.这就误解了谷歌的意思.本来很好的组件,被大家滥用,导致用户老是感觉手机的程序控制不住,老是后台偷偷启动.小白用户甚至更不理解了.好了现在言归正传. android广播按发送

Android广播机制的深入学习

部分内容转载自http://www.cnblogs.com/lwbqqyumidi/p/4168017.html 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组

UDP协议----简单的CS模型实现

UDP简单介绍 传输层主要应用的协议模型有两种,一种是TCP协议,另外一种则是UDP协议.TCP协议在网络通信中占主导地位,绝大多数的网络通信借助TCP协议完成数据传输.但UDP也是网络通信中不可或缺的重要通信手段. 相较于TCP而言,UDP通信的形式更像是发短信.不需要在数据传输之前建立.维护连接.只专心获取数据就好.省去了三次握手的过程,通信速度可以大大提高,但与之伴随的通信的稳定性和正确率便得不到保证.因此,我们称UDP为"无连接的不可靠报文传递". 那么与我们熟知的TCP相比,

Android广播机制概述

1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组件之间的消息通信: 4.不同app之间的组件之间消息通信: 5.Android系统在特定情况下与App之间的消息通

Android广播机制:Broadcast

转载:Android总结篇系列:Android广播机制 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通信方式,可以使用的场景如下:1.同一app内部的同一组件内的消息通信(单个或多个线程之间): 2.同一app内部的不同组件之间的消息通信(单个进程): 3.同一app具有多个进程的不同组件之间的消息通信: 4.不同app之间的组件之间消息通信:

转: 从现实生活中理解什么是广播机制

来自:http://blog.sina.com.cn/s/blog_714338950100p4km.html 一听到广播我们第一感觉就会联想到小时候村里面的广播,每逢村里有什么活动都是通过广播发送的.收听收音机也是一种广播,在收音机中有很多个广播电台,每个广播电台播放的内容都不相同.接收广播时广播(发送方)并不在意我们(接收方)接收到广播时如何处理.好比我们收听交通电台的广播,电台中告诉我们现在在交通状况如何,但它并不关心我们接收到广播时做如何做出处理,这不是广播应该关心的问题,OK,到这里我