当前位置: 首页 > news >正文

网站建设教程软件下载计算机网站设计

网站建设教程软件下载,计算机网站设计,哪个小说网站可以做封面,没有备案的网站百度不收录1.概念前面介绍的TCP,UDP都是单播方式#xff0c;即一对一.而广播是一台主机向局域网内的所有主机发送数据。这时#xff0c;同一网段的所有主机都能接收到数据。发送广播包的步骤大致如下:(1)确定一个发送广播的接口#xff0c;如eth0(2)确定广播的地址#xff0c;通过ioc…1.概念前面介绍的TCP,UDP都是单播方式即一对一.而广播是一台主机向局域网内的所有主机发送数据。这时同一网段的所有主机都能接收到数据。发送广播包的步骤大致如下:(1)确定一个发送广播的接口如eth0(2)确定广播的地址通过ioctl函数请求码设置为SIOCGIFBRDADDR得到广播的地址(3)使用这个广播地址进行广播由于TCP协议是端到端的协议在通信之前必须建立连接三次握手之后才能发送数据。而广播是一对多的通信所以TCP不支持广播。在局域网内广播通常用来探测服务器。2. 探测服务器实例这个例子通过在局域网内发送广播包收到广播包的服务器应答主机。这样就能够探测到局域网内的服务器。主机:/**客户端实现广播**/#define IP_FOUND IP_FOUND#define IP_FOUND_ACK IP_FOUND_ACK#define IFNAME eth0#define MCAST_PORT 9999int main(int argc,char*argv[]){int ret-1;int sock-1;int so_broadcast1;struct ifreq ifr;struct sockaddr_in broadcast_addr;//广播地址struct sockaddr_in from_addr;//服务端地址int from_lensizeof(from_addr);int count-1;fd_set readfd;//读文件描述符集合char buffer[1024];struct timeval timeout;timeout.tv_sec2;//超时时间为2秒timeout.tv_usec0;socksocket(AF_INET,SOCK_DGRAM,0);//建立数据报套接字if(sock0){printf(HandleIPFound:sock init error\n);return;}//将使用的网络接口名字复制到ifr.ifr_name中由于不同的网卡接口的广播地址是不一样的因此指定网卡接口strncpy(ifr.ifr_name,IFNAME,strlen(IFNAME));//发送命令获得网络接口的广播地址if(ioctl(sock,SIOCGIFBRDADDR,ifr)-1){perror(ioctl error);return;}//将获得的广播地址复制到broadcast_addrmemcpy(broadcast_addr,ifr.ifr_broadaddr,sizeof(struct sockaddr_in));//设置广播端口号printf(broadcast IP is:%s\n,inet_ntoa(broadcast_addr.sin_addr));broadcast_addr.sin_familyAF_INET;broadcast_addr.sin_porthtons(MCAST_PORT);//默认的套接字描述符sock是不支持广播必须设置套接字描述符以支持广播retsetsockopt(sock,SOL_SOCKET,SO_BROADCAST,so_broadcast,sizeof(so_broadcast));//发送多次广播看网络上是否有服务器存在int times10;int i0;for(i0;i //广播发送服务器地址请求timeout.tv_sec2;//超时时间为2秒timeout.tv_usec0;retsendto(sock,IP_FOUND,strlen(IP_FOUND),0,(struct sockaddr*)broadcast_addr,sizeof(broadcast_addr));if(ret-1){continue;}//文件描述符清0FD_ZERO(readfd);//将套接字文件描述符加入到文件描述符集合中FD_SET(sock,readfd);//select侦听是否有数据到来retselect(sock1,readfd,NULL,NULL,timeout);switch(ret){case -1:break;case 0:printf(timeout\n);break;default://接收到数据if(FD_ISSET(sock,readfd)){countrecvfrom(sock,buffer,1024,0,(struct sockaddr*)from_addr,from_len);//from_addr为服务器端地址printf(recvmsg is %s\n,buffer);if(strstr(buffer,IP_FOUND_ACK)){printf(found server IP is:%s\n,inet_ntoa(from_addr.sin_addr));//服务器端的发送端口号printf(Server Port:%d\n,htons(from_addr.sin_port));}return;}break;}}return;}服务器:/**广播服务器端代码**/#define IP_FOUND IP_FOUND#define IP_FOUND_ACK IP_FOUND_ACK#define PORT 9999int main(int argc,char*argv[]){int ret-1;int sock;struct sockaddr_in server_addr;//服务器端地址struct sockaddr_in from_addr;//客户端地址int from_lensizeof(struct sockaddr_in);int count-1;fd_set readfd;//读文件描述符集合char buffer[1024];struct timeval timeout;timeout.tv_sec2;timeout.tv_usec0;socksocket(AF_INET,SOCK_DGRAM,0);//建立数据报套接字if(sock0){perror(sock error);return;}memset((void*)server_addr,0,sizeof(struct sockaddr_in));server_addr.sin_familyAF_INET;server_addr.sin_addr.s_addrhtons(INADDR_ANY);server_addr.sin_porthtons(PORT);//将地址结构绑定到套接字上./retbind(sock,(struct sockaddr*)server_addr,sizeof(server_addr));if(ret0){perror(bind error);return;}while(1){timeout.tv_sec2;timeout.tv_usec0;//文件描述符集合清0FD_ZERO(readfd);//将套接字描述符加入到文件描述符集合FD_SET(sock,readfd);//select侦听是否有数据到来retselect(sock1,readfd,NULL,NULL,timeout);//侦听是否可读printf(ret%d\n,ret);switch(ret){case -1://发生错误break;case 0://超时printf(timeout\n);break;default:if(FD_ISSET(sock,readfd)){countrecvfrom(sock,buffer,1024,0,(struct sockaddr*)from_addr,from_len);//接收客户端发送的数据//from_addr保存客户端的地址结构if(strstr(buffer,IP_FOUND)){//响应客户端请求//打印客户端的IP地址printf(Client IP is%s\n,inet_ntoa(from_addr.sin_addr));//打印客户端的端口号printf(Client Send Port:%d\n,ntohs(from_addr.sin_port));memcpy(buffer,IP_FOUND_ACK,strlen(IP_FOUND_ACK)1);countsendto(sock,buffer,strlen(buffer),0,(struct sockaddr*)from_addr,from_len);//将数据发送给客户端}return;}break;}}return;}说明: 由于默认的套接字是不支持广播的所以必须设置套接字选项(setsockopt)来支持广播。接口的广播地址通过ioctl函数得到。广播是基于UDP协议的。MAC地址是FF:FF:FF:FF:FF:FF.
http://www.zqtcl.cn/news/794312/

相关文章:

  • 网站管理助手建站沈阳专业网站建设企业
  • 企业网站开发公司大全建筑工程培训
  • 免费网站开发模板云南省网站开发软件
  • dede小游戏php网站源码广州网站vi设计报价
  • 邯郸建设局网站资质申报wordpress 前端 插件
  • 关于asp_sql网站开发的书籍小程序跳转网页方法
  • 昆明网站开发公司电话建设手机银行的网站
  • 福州建设注册中心网站怎么做公司展示网站
  • 网络营销网站建设知识平面设计初中毕业能学吗
  • 2019销售网站开发与设计现状怎么在网上卖东西赚钱
  • 做网站前后端的发布流程如何管理wordpress网站模板下载
  • 网站历史频道怎么做网站修改标题有影响吗
  • 做自己的卡盟网站做技术一般逛那些网站
  • 网站建设自学多长时间做网站原型的软件
  • 营销型的物流网站模板北京楼市最新消息
  • 宁波模版建站公司湘潭建设网站公司
  • 世界十大网站排名出炉最新军事新闻最新消息视频
  • 医疗电子的网站建设城市建设管理
  • win10建站wordpress商城网站结算页面怎么做
  • 电商网站模板引擎惠阳做网站公司
  • 如何在百度做网站推广中企动力企业邮箱手机邮箱
  • extjs做的网站开发公司宣传语
  • 长安做外贸网站关于阅读类网站的建设规划书
  • php网站建设思路方案阿里巴巴如何建设网站
  • 网站做什么推广好网站域名注册步骤
  • 官方建网站有哪些步骤国内成熟的crm系统
  • 建设银行深圳天健世纪支行网站电子商务网站建设员
  • 个人备案域名可以做企业网站吗海南做公司网站
  • 浙江坤宇建设有限公司网站施工企业施工生产计划
  • 成都建站推广域名备案用的网站建设方案