一.广播

1.接收

void main()
{SOCKET s = ::socket(AF_INET, SOCK_DGRAM, 0);// 首先要绑定一个本地地址,指明广播端口号SOCKADDR_IN sin;sin.sin_family = AF_INET;sin.sin_addr.S_un.S_addr = INADDR_ANY;    sin.sin_port = ::ntohs(4567);if(::bind(s, (sockaddr*)&sin, sizeof(sin)) == SOCKET_ERROR){printf(" bind() failed \n");return;}// 接收广播printf(" 开始在4567端口接收广播数据... \n\n");SOCKADDR_IN addrRemote;    int nLen = sizeof(addrRemote);char sz[256];while(TRUE){int nRet = ::recvfrom(s, sz, 256, 0, (sockaddr*)&addrRemote, &nLen);if(nRet > 0){sz[nRet] = '\0';printf(sz);}}
}

2.发送

void main()
{SOCKET s = ::socket(AF_INET, SOCK_DGRAM, 0);// 有效SO_BROADCAST选项BOOL bBroadcast = TRUE;::setsockopt(s, SOL_SOCKET, SO_BROADCAST, (char*)&bBroadcast, sizeof(BOOL));
// 设置广播地址,这里的广播端口号(电台)是4567SOCKADDR_IN bcast;bcast.sin_family = AF_INET;bcast.sin_addr.s_addr = INADDR_BROADCAST; // ::inet_addr("255.255.255.255");bcast.sin_port = htons(4567);// 发送广播printf(" 开始向4567端口发送广播数据... \n \n");char sz[] = "This is just a test. \r\n";while(TRUE){::sendto(s, sz, strlen(sz), 0, (sockaddr*)&bcast, sizeof(bcast));::Sleep(5000);}
}

二.IP多播

1.加入多播组并接收数据

void main()
{SOCKET s = ::socket(AF_INET, SOCK_DGRAM, 0);// 允许其它进程使用绑定的地址BOOL bReuse = TRUE;::setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char*)&bReuse, sizeof(BOOL));
// 绑定到4567端口sockaddr_in si;si.sin_family = AF_INET;si.sin_port = ::ntohs(4567);si.sin_addr.S_un.S_addr = INADDR_ANY;::bind(s, (sockaddr*)&si, sizeof(si));// 加入多播组ip_mreq    mcast;mcast.imr_interface.S_un.S_addr = INADDR_ANY;mcast.imr_multiaddr.S_un.S_addr = ::inet_addr("234.5.6.7");  // 多播地址为234.5.6.7::setsockopt(s, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char*)&mcast, sizeof(mcast));// 接收多播组数据printf(" 开始接收多播组234.5.6.7上的数据... \n");char buf[1280];int nAddrLen = sizeof(si);while(TRUE){int nRet = ::recvfrom(s, buf, strlen(buf), 0, (sockaddr*)&si, &nAddrLen);if(nRet != SOCKET_ERROR){buf[nRet] = '\0';printf(buf);}else{int n = ::WSAGetLastError();break;}}
}

2.发送广播

同上

设置SO_REUSEADDR,则允许多个进程绑定到这个端号,这样加入到同个端口的组都可以接收到数据

三.源地址的IP多播

即可指定接收组内特定IP地址的消息

c#参考:http://www.cnblogs.com/xuhx/archive/2004/06/23/18150.html
http://www.cnblogs.com/xuhx/archive/2004/06/27/18960.html

Windows网络与通信程序设计 第5章

转载于:https://www.cnblogs.com/Clingingboy/archive/2011/06/21/2086349.html

网络编程之---广播和IP多播相关推荐

  1. 【Socket网络编程】5.单播、多播(组播)、广播

    [单播].[多播(组播)].[广播] https://blog.csdn.net/daaikuaichuan/article/details/83474089 ####[单播] 用于两个主机之间的端对 ...

  2. 【Linux网络编程】广播

    00. 目录 文章目录 00. 目录 01. 广播概述 02. 广播地址分类 03. 广播的特点 04. setsockopt函数 05. 程序示例 06. 附录 01. 广播概述 在生活中广播无处不 ...

  3. 网络编程原理进阶___TCP/IP(javaee)

    点击跳转 本章重点 网络编程原理进阶 应用层 DNS 传输层 UDP TCP面试重点 `TCP`原理 确认应答 超时重传 连接管理(面试重点) 3次握手 4次挥手 滑动窗口 流量控制 拥塞控制 延时应 ...

  4. 【网络编程】基于TCP/IP协议的C/S模型

    相关视频--C3程序猿-windows网络编程:第一部分tcp/ip 我的小站--半生瓜のblog 基于TCP/IP协议的C/S模型 基于TCP/IP协议的C/S模型 TCP/IP协议 Client/ ...

  5. 网络编程3之TCP/IP协议

    在TCP/IP协议中,最重要的协议是[TCP.UDP.IP]协议 1.TCP/IP协议特点 1)Internet上不同系统之间互联的一组协议2)为分散和不同类型的硬件提供通用的编程接口.3)TCP/I ...

  6. 高等学校计算机科学与技术教材:tcp/ip网络编程技术基础,TCP/IP网络编程技术基础...

    TCP/IP网络编程技术基础 语音 编辑 锁定 讨论 上传视频 <TCP/IP网络编程技术基础>是2012年北京交通大学出版社出版的图书,作者是王雷. 书    名 TCP/IP网络编程技 ...

  7. 【Linux网络编程】域名转IP后的一些深层(计算机底层)的思考

    文章目录 以下代码运行于64位Linux系统中 先看一下代码样本 思考 说这些是为了证明什么呢? 结语 以下代码运行于64位Linux系统中 先看一下代码样本 HOSTENT *H = gethost ...

  8. JAVA零学习之基础归纳(十八)--网络编程、协议、IP、基本API、URL、socket等

    [Java程序可以非常方便的访问互联网上的 HTTP服务.FTP服务等,并可以直接取得互联网上的远程资源,还可以向远程资源发送 GET.POST请求] 一.网络编程 1.1 网络概念和分类 所谓计算机 ...

  9. 网络编程二:TCP/IP协议,HPPT协议

    TCP/IP基本概念 Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议,是Internet最基本的协议.Internet国际互 ...

最新文章

  1. win10卸载电脑管家就蓝屏_win10 动不动就蓝屏,都不敢用啦。该怎么解决呢?
  2. 如何修复在Microsoft Azure中“虚拟机防火墙打开,关闭RDP的连接端口”问题
  3. 电脑音箱有电流声_音箱造成电流声的原因
  4. 自定义控件的构建(6)
  5. 有哪些网站用爬虫爬取能得到很有价值的数据?
  6. 软件工程导论—需求分析
  7. Testin云测云层天咨众测学院开课了!
  8. 网站建设:颜色与线条的选择
  9. dbForge Studio for MySQL_完美破解版
  10. SpringSession实战项目(基于SpringBoot项目)【附源码】
  11. QQ圈子降级为“应用”后应关注其隐私设置
  12. win10如何彻底关闭病毒实时保护
  13. PX4飞控之PWM输出控制
  14. 映泰G31计算机主板进入BIOS,映泰主板bios设置方法【图解】
  15. 使用批处理__更改ip
  16. 四类运算放大器的技术发展趋势及其应用热点
  17. web前端短期培训课程都有那些内容
  18. 北邮水题 90. 字符串转换
  19. 高质量C++编程指南 附录B:C++/C试题
  20. 欧奈尔行业排名天天更新

热门文章

  1. Kubernetes的yaml文件中的command使用
  2. 关于使用jQuery时$(document).ready()方法失效问题
  3. 《剑指offer》把字符串转为整数
  4. Python装饰器学习(九步入门)
  5. TensorFlow学习笔记(二十七)CNN的9大模型之Dan CiresanNet
  6. 工业界推荐系统实用分析技巧
  7. 使用 cProfile 和火焰图调优 Python 程序性能
  8. at org.apache.coyote.http11.AbstractOutputBuffer.checkLengthBeforeWrite
  9. UVA 10069 Distinct Subsequences(DP)
  10. 《C语言程序设计与实践(第2版)》——第1章 C语言与程序设计概述 1.1初见C语言程序...