多播收发程序multicast
来源:互联网 发布:淘宝促销faq 编辑:程序博客网 时间:2024/05/17 14:17
最近工作中编写UDP多播程序,要求能收能发。要求是非常简单了,但是从来没有这方面的经验,于是开始到网上翻,先看看基本的概念,再下载能用的代码,然后改成自己需要的,凡事都是三段论,三步走。
概念:
多播:加入了同一个多播组的主机可以接受到此组内的所有数据,网络中的交换机和路由器只向有需求者复制并转发其所需数据。主机可以向路由器请求加入或退出某个组,网络中的路由器和交换机有选择的复制并传输数据,即只将组内数据传输给那些加入组的主机。这样既能一次将数据传输给多个有需要(加入组)的主机,又能保证不影响其他不需要数据(未加入组)主机的其他通讯。
代码:
接下来找代码,看看多播是什么效果,有个切身的感受,才能加深理解嘛。上google code search 输入 “multicast ip_add_membership lang:c|c++ 234.5.6.7” ,搜索的关键字里面加了一个ip地址,是因为看了别的例子,拿这个ip地址做多播地址,所以就把它也当关键字输进去了,测试了几个,发现这个好用,简单http://www.google.cn/codesearch/p?hl=zh-CN#uKFNR_GmXJU/reference/programming/features/multicast/MulticastTest.zip%7CYvUlBXkxhqc/Main.cpp&q=multicast%20ip_add_membership%20lang:c%7Cc++%20234.5.6.7
下面是连接提供的代码,新建一个控制台工程,粘贴过来就可以用,可能需要在最前面加一行#include "stdafx.h"。
编译运行,可以收发数据。看上来这个东西可以用啊。关键的东西就是加入多播组。
修改:
在发送函数bSendMulticast和接收函数bReceiveMulticast上修改,能够收发我自己的数据了。好啦,有了可以用的代码,我就有了基础设施了,可以搭建自己的东西。
开展自己的工作:
上面的代码的读写是在一个循环里面完成,因为我的任务的要求,要有读线程,当有数据时调用一个回调函数,写就不需要另开线程了,主线程里面检查有数据则发送,无数据则空转。
有人问:socket可以同时读写吗,也就是说我在两个线程里面用同一个socket句柄,需要互斥吗?
答:(非标准答案,请观众再自己确认一下)
如果一个是读线程,一个是写线程,那就不用互斥了。
如果每个线程里面既有读,又有写,那就好好保护一下吧。(好像没有这么干的,自找麻烦嘛,这不是!)
- 多播收发程序multicast
- android multicast 多播(组播)问题
- C#多播委托(Multicast Delegate)
- php multicast多播实现详解
- 网络编程多播——Multicast
- 组播,multicast
- Multicast 组播
- multicast (组播)
- Android UDP多播 Not a multicast group 问题处理
- dubbo中的多播multicast://224.5.6.7:1234
- 网络基本概念之TCP, UDP, 单播(Unicast), 多播(组播)(Multicast)
- 网络基本概念之TCP, UDP, 单播(Unicast), 多播(组播)(Multicast)
- 网络基本概念之TCP, UDP, 单播(Unicast), 多播(组播)(Multicast)
- 网络基本概念之TCP, UDP, 单播(Unicast), 多播(组播)(Multicast)
- 网络基本概念之TCP, UDP, 单播(Unicast), 多播(组播)(Multicast)
- Multicast :: 组播学习笔记
- 组播Multicast 1 overview
- 组播Multicast 2 PIM
- event.keycode值大全
- 注意!Cegui 修改了DX渲染目标,会导致DX混乱
- linux中字符串的处理
- 蔡头开博啦
- Symbian本地化显示中文
- 多播收发程序multicast
- 不显示删除回复显示所有回复显示星级回复显示得分回复 以后别写程序了,65个源码网站奉献给大家
- 常见sql面试题
- PKG文件详细解密
- Symbian OS 打包文件(.pkg)详解及问题总结
- 暖和能够后
- 诡异的Invalid postback or callback argument(無效的回傳或回呼引數)
- oracle lockmode
- Mysql 分页技术总结