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

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

server.c

 #include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include <strings.h>
#include<string.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<net/if.h> #define SERVER_PORT 8000 //服务端端口无关紧要
#define MAXLINE 1500 #define BROADCAST_IP "192.168.23.255"//所在局域网的广播IP
#define CLIENT_PORT 9000 //客户端端口必须指定 int main(int argc,char* argv[])
{
int sockfd;
struct sockaddr_in servaddr,clieaddr;
char buf[MAXLINE];
//构造用于UDP通信的套接字
sockfd = socket(AF_INET,SOCK_DGRAM,); bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET; //IPv4
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);//本地任意有效IP
servaddr.sin_port = htons(SERVER_PORT); bind(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr)); int flag = ;
setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&flag,sizeof(flag)); //构造client地址 IP+端口
bzero(&clieaddr,sizeof(clieaddr));
clieaddr.sin_family = AF_INET;
inet_pton(AF_INET,BROADCAST_IP,&clieaddr.sin_addr.s_addr);
clieaddr.sin_port = htons(CLIENT_PORT); int i = ;
while()
{
sprintf(buf,"服务端发送了广播%d 次\n",i++);
sendto(sockfd,buf,strlen(buf),,(struct sockaddr*)&clieaddr,sizeof(clieaddr));
sleep();
}
close(sockfd); return ;
}

client.c

 #include<stdio.h>
#include<stdlib.h>
#include<strings.h>
#include<string.h>
#include<sys/socket.h>
#include<unistd.h>
#include<sys/types.h>
#include<arpa/inet.h> #define SERVER_PORT 8000
#define CLIENT_PORT 9000
#define MAXLINE 4096 int main(int argc,char* argv[])
{
struct sockaddr_in localaddr;
int confd;
ssize_t len;
char buf[MAXLINE];
//1.创建一个socket
confd = socket(AF_INET,SOCK_DGRAM,);
//初始化本地地址
bzero(&localaddr,sizeof(localaddr));
localaddr.sin_family = AF_INET;
inet_pton(AF_INET,"0.0.0.0",&localaddr.sin_addr.s_addr);
localaddr.sin_port = htons(CLIENT_PORT); int ret = bind(confd,(struct sockaddr*)&localaddr,sizeof(localaddr));
if(ret == )
{
printf("...bind ok...\n");
}
while()
{
len = recvfrom(confd,buf,sizeof(buf),,NULL,);
write(STDOUT_FILENO,buf,len);
}
close(confd); return ;
}

测试结果:

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

  1. Android广播机制的深入学习

    部分内容转载自http://www.cnblogs.com/lwbqqyumidi/p/4168017.html 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者 ...

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

    1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通 ...

  3. Android广播机制概述

    1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通 ...

  4. Android广播机制:Broadcast

    转载:Android总结篇系列:Android广播机制 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广 ...

  5. Android广播机制(转)

    1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为Android组件间的通 ...

  6. Android广播机制

    原文出处: Android总结篇系列:Android广播机制 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的 ...

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

    UDP简单介绍 传输层主要应用的协议模型有两种,一种是TCP协议,另外一种则是UDP协议.TCP协议在网络通信中占主导地位,绝大多数的网络通信借助TCP协议完成数据传输.但UDP也是网络通信中不可或缺 ...

  8. 深入理解计算机操作系统——第11章:CS模型,网络

    网络编程: 11.1 客户端-服务器编程模型 (1)一个应用是由一个服务器进程和一个或多个客户端进程组成. (2)服务器管理某种资源,并且操纵这种资源来为客户端服务. CS模型: CS的基本操作是事务 ...

  9. Android随笔之——Android广播机制Broadcast详解

    在Android中,有一些操作完成以后,会发送广播,比如说发出一条短信,或打出一个电话,如果某个程序接收了这个广播,就会做相应的处理.这个广播跟我们传统意义中的电台广播有些相似之处.之所以叫做广播,就 ...

随机推荐

  1. 查看环境变量CLASSPATH, PATH ,JAVA_HOME-------->mac

    终端(命令行)操作 推荐两篇博客:http://elf8848.iteye.com/blog/1582137 http://blog.csdn.net/done58/article/details/5 ...

  2. FW:主流RPC框架

    主流RPC框架  2015年10月27日  zman  RPC 介绍目前在互联网公司比较流行的开源的RPC框架. RPC框架比较   语言 协议 ​服务治理 ​社区 机构 Hessian 多语言 he ...

  3. VS调用python方法

    1.  安装python3.7 2.  Vs2010中配置python: 3.添加头文件:#include <Python.h> 4.问题:error LNK2001: 无法解析的外部符号 ...

  4. SQL Server 常用分页SQL(转)

    发现网上好多都是错的.网上经常查到的那个Top Not in 或者Max 大部分都不实用,很多都忽略了Order和性能问题.为此上网查了查,顺带把2000和2012版本的也补上了. 先说说网上常见SQ ...

  5. golang环境安装

    到官方https://golang.org/dl/下载安装包 cd /usr/local/src wget https://storage.googleapis.com/golang/go1.8.li ...

  6. MySQL单列索引和组合索引的区别介绍(转)

    原文:http://database.51cto.com/art/201011/233234.htm MySQL单列索引是我们使用MySQL数据库中经常会见到的,MySQL单列索引和组合索引的区别可能 ...

  7. Codeforces441B_Valera and Fruits(暴力)

    Valera and Fruits time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  8. HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'NTLM'。

    情况:WCF服务在浏览器中可以正常浏览,但是通过程序调用提示: HTTP request is unauthorized with client authentication scheme 'Anon ...

  9. Angular 笔记系列(二)数据绑定

    数据绑定这块儿没啥说的,简单两个例子带过了. Hello World: <!DOCTYPE html> <html ng-app> <head> <title ...

  10. React:快速上手(6)——掌握React Router

    React:快速上手(6)——掌握React Router 引入Router 安装 npm install react-router-dom 基础组件 React Router中有三种类型的组件:路由 ...