1. // 发送端
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <sys/socket.h>
  5. #include <unistd.h>
  6. #include <sys/types.h>
  7. #include <netdb.h>
  8. #include <netinet/in.h>
  9. #include <arpa/inet.h>
  10. #include <string.h>
  11. using namespace std;
  12. int main()
  13. {
  14. setvbuf(stdout, NULL, _IONBF, 0);
  15. fflush(stdout);
  16. int sock = -1;
  17. if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
  18. {
  19. cout<<"socket error"<<endl;
  20. return false;
  21. }
  22. const int opt = 1;
  23. //设置该套接字为广播类型,
  24. int nb = 0;
  25. nb = setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char *)&opt, sizeof(opt));
  26. if(nb == -1)
  27. {
  28. cout<<"set socket error..."<<endl;
  29. return false;
  30. }
  31. struct sockaddr_in addrto;
  32. bzero(&addrto, sizeof(struct sockaddr_in));
  33. addrto.sin_family=AF_INET;
  34. addrto.sin_addr.s_addr=htonl(INADDR_BROADCAST);
  35. addrto.sin_port=htons(6000);
  36. int nlen=sizeof(addrto);
  37. while(1)
  38. {
  39. sleep(1);
  40. //从广播地址发送消息
  41. char smsg[] = {"abcdef"};
  42. int ret=sendto(sock, smsg, strlen(smsg), 0, (sockaddr*)&addrto, nlen);
  43. if(ret<0)
  44. {
  45. cout<<"send error...."<<ret<<endl;
  46. }
  47. else
  48. {
  49. printf("ok ");
  50. }
  51. }
  52. return 0;
  53. }
  1. // 接收端
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <sys/socket.h>
  5. #include <unistd.h>
  6. #include <sys/types.h>
  7. #include <netdb.h>
  8. #include <netinet/in.h>
  9. #include <arpa/inet.h>
  10. #include <string.h>
  11. using namespace std;
  12. int main()
  13. {
  14. setvbuf(stdout, NULL, _IONBF, 0);
  15. fflush(stdout);
  16. // 绑定地址
  17. struct sockaddr_in addrto;
  18. bzero(&addrto, sizeof(struct sockaddr_in));
  19. addrto.sin_family = AF_INET;
  20. addrto.sin_addr.s_addr = htonl(INADDR_ANY);
  21. addrto.sin_port = htons(6000);
  22. // 广播地址
  23. struct sockaddr_in from;
  24. bzero(&from, sizeof(struct sockaddr_in));
  25. from.sin_family = AF_INET;
  26. from.sin_addr.s_addr = htonl(INADDR_ANY);
  27. from.sin_port = htons(6000);
  28. int sock = -1;
  29. if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
  30. {
  31. cout<<"socket error"<<endl;
  32. return false;
  33. }
  34. const int opt = 1;
  35. //设置该套接字为广播类型,
  36. int nb = 0;
  37. nb = setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char *)&opt, sizeof(opt));
  38. if(nb == -1)
  39. {
  40. cout<<"set socket error..."<<endl;
  41. return false;
  42. }
  43. if(bind(sock,(struct sockaddr *)&(addrto), sizeof(struct sockaddr_in)) == -1)
  44. {
  45. cout<<"bind error..."<<endl;
  46. return false;
  47. }
  48. int len = sizeof(sockaddr_in);
  49. char smsg[100] = {0};
  50. while(1)
  51. {
  52. //从广播地址接受消息
  53. int ret=recvfrom(sock, smsg, 100, 0, (struct sockaddr*)&from,(socklen_t*)&len);
  54. if(ret<=0)
  55. {
  56. cout<<"read error...."<<sock<<endl;
  57. }
  58. else
  59. {
  60. printf("%s\t", smsg);
  61. }
  62. sleep(1);
  63. }
  64. return 0;
  65. }

Linux系统下UDP发送和接收广播消息小样例的更多相关文章

  1. Linux系统下UDP发送和接收广播消息小例子

    // 发送端 #include <iostream> #include <stdio.h> #include <sys/socket.h> #include < ...

  2. linux系统下邮件的发送

    在linux系统下发送邮件一般都要要求本地的机器必须安装和启动Sendmail服务,配置非常麻烦,而且会带来不必要的资源占用. 其实我还可以安装mailx软件,通过修改配置文件可以使用外部SMTP服务 ...

  3. Linux系统下DHCP服务安装部署和使用详解

    一.概述 DHCP :动态主机设置协议(英语:Dynamic Host Configuration Protocol,DHCP)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:用于内部网或 ...

  4. 在Linux系统下mail命令的用法

    在Linux系统下mail命令的测试 1. 最简单的一个例子: mail -s test admin@aispider.com 这条命令的结果是发一封标题为test的空信给后面的邮箱,如果你有mta并 ...

  5. 使用 ipmitool 实现 Linux 系统下对服务器的 ipmi 管理

    http://www.ibm.com/developerworks/cn/linux/l-ipmi/ 1.简介 IPMI(Intelligent Platform Management Interfa ...

  6. Linux系统下安装Redis和Redis集群配置

    Linux系统下安装Redis和Redis集群配置 一. 下载.安装.配置环境: 1.1.>官网下载地址: https://redis.io/download (本人下载的是3.2.8版本:re ...

  7. Linux系统下如何优雅地关闭Java进程?

    资料出处: http://www.sohu.com/a/329564560_700886 https://www.cnblogs.com/nuccch/p/10903162.html 前言 Linux ...

  8. Linux 系统下安装 rz/sz 命令及使用说明

    Linux 系统下安装 rz/sz 命令及使用说明 rz/sz命令,实现将本地的文件上传到服务器或者从服务器上下载文件到本地,但是很多Linux系统初始并没有这两个命令,以下为安装和使用的具体步骤: ...

  9. 深入理解linux系统下proc文件系统内容

    深入理解linux系统下proc文件系统内容 内容摘要:Linux系统上的/proc目录是一种文件系统,即proc文件系统. Linux系统上的/proc目录是一种文件系统,即proc文件系统.与其它 ...

随机推荐

  1. tableView被Nav挡住了

    // 1. //    self.navigationController.navigationBar.translucent = NO; //    self.tabBarController.ta ...

  2. UIWebView1-b

    随着H5的强大,hybrid app已经成为当前互联网的大方向,单纯的native app和web app在某些方面显得就很劣势.关于H5的发展史,这里有一篇文章推荐给大家,今天我们来学习最基础的基于 ...

  3. VOIP概述

    简介 VoIP(Voice over Internet Protocol)就是将模拟声音讯号(Voice)数字化,以数据封包(Data Packet)的型式在 IP 数据网络 (IP Network) ...

  4. ZOJ 2562 More Divisors

    又是个水题,刚刚开始没有用搜索,因为对于反素数有: n=2^t1*3^t2^5^t3*7^t4..... 这里有 t1>=t2>=t3>=t4. 而且相同的因数的情况下,素数越不同越 ...

  5. springboot + devtools(热部署)

    技术介绍 devtools:是boot的一个热部署工具,当我们修改了classpath下的文件(包括类文件.属性文件.页面等)时,会重新启动应用(由于其采用的双类加载器机制,这个启动会非常快,如果发现 ...

  6. leetcode面试准备: CountPrimes

    1 题目 Description: Count the number of prime numbers less than a non-negative number, n. 接口:public in ...

  7. RubyGems使用

    RubyGems的功能类似于Linux下的apt-get.使用它可以方便第从远程服务器下载并安装Rails. # 安装指定gem包,程序先从本机查找gem包并安装,如果本地没有,则从远程gem安装.g ...

  8. Activity的启动过程

    详见: http://www.cloudchou.com/android/post-805.html

  9. 在Windows Azure公有云环境部署企业应用

    作者 王枫 发布于 2014年4月5日 企业内部应用转换为在线服务 Windows Azure已经成为众多IT服务提供商们热议的话题,其中,有的认为只有提供互连网用户服务的应用才适合放在公有云环境内运 ...

  10. eclipse android重新安装遇到各种问题

    1.JAVA_HOME环境变量失效的解决办法 原文网址:http://www.cnblogs.com/yjmyzz/p/3521554.html 晚上把oracle自带的weblogic给卸载了,然后 ...