自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 资源 (37)
  • 收藏
  • 关注

原创 vc add files to folder 失效

如题 vc   add files to folder 失效原因可能如下,装了所谓的“大企业版集成sp6”的版本引起。 1.查看 版本C:/Program Files/Microsoft Visual Studio/Common/MSDev98/Bin/MSDEV.EXE,2.如果是6.0.8168.2 记得不是很清楚了,说明根本不是sp6. 请用微软的sp6更新下就好了,更新后版本号是

2008-06-25 13:09:00 2094 2

原创 调试Log

int  myLogPrint (int model,int level,const char *format,...); #define XTRACE(m,l,fmt, a...) myLogPrint(m,l,"[L:%d]%s():" fmt, __LINE__,__FUNCTION__, ##a)

2008-06-18 09:19:00 445

转载 异步发送数据 FD_WRITE

FD_WRITE 相对来说就麻烦一些. 首先, 当你建立了一个连接时, 会产生一个 FD_WRITE 事件. 但是如果你认为在收到 FD_WRITE 时调用 send() 就万事大吉, 那就错了. FD_WRITE 事件只在发送缓冲区有多出的空位, 可以容纳需要发送的数据时才会触发.上面所谓的发送缓冲区,是指系统底层提供的缓冲区. send() 先将数据写入到发送缓冲区中, 然后通过网络发送到

2008-05-30 15:03:00 820

原创 循环发送

 while(len > 0)  {   sentBytes = send(s, &buf[dataPtr], len, 0);   if(sentBytes == SOCKET_ERROR)   {    m_errorCode = WSAGetLastError();    return SOCKET_ERROR;   }   dataPtr += sentBytes;   len -= se

2008-04-17 19:41:00 478

原创 GNU/Linux 编程指南

 第一版 下载地址http://www.samspublishing.com/content/images/0672316072/downloads/code.zip  

2008-04-16 20:49:00 799

原创 SourceInsight 中集成Artistic Style 格式化代码

下载地址http://sourceforge.net/project/showfiles.php?group_id=2319lWindows平台下也有好多人都喜欢用SourceInsight编辑C/C++程序,但是SourceInsight没有提供对代码格式化的功能,如果将Artistic Style集成到SourceInsight中,那就可以为它扩展出代码格式化的功能了。假定AStyle

2008-04-16 14:53:00 5161 8

原创 记事本

专门记些小东西 http://download.csdn.net/source/380039

2008-04-14 20:14:00 409

原创 Linux 学习日记_下载Fedora

版本太多,核心一样,大同小异,选择了用户较多的 Fedora。下载地址: www.linuxiso.orgLinux网址大全 http://zhaolinux.com 

2008-04-11 19:59:00 385

原创 Tree 命令自动生成 目录树到txt

使用DOS的[TREE]命令,具体方法如下:[开始]→[所有程序]→[附件]→[DOS命令提示符]→进入DOS界面;[CD/+回车]→返回C:/根目录;在C:/下键入TREE□X:/目录名□/F□>ABC.TXT [回车],此时就会在C:/盘的根目录下生成一个名为“ABC.TXT”的显示完整树状结构的文本文件,打印该文本文件就一目了然了。说明:□--表示在此位置是空格;TR

2008-04-08 14:27:00 5206

原创 XDeskCal v3.0 注册方法

安装之后,到安装目录下,新建一个txt文本,然后改名config.ini ,注意后缀 在里面输入:[Reg]regid=)9W)E96YD;W=Nregcode=40TAI3D$@0W)!0TMI3D!=regname=绿色下载站regsn=J-S9#,$(V-SA!.#4P-$)$,$%!-T4R034T.3=$.$$R,$7"S,FKS/+4V-6^保存即可 

2008-04-08 13:46:00 734

原创 fatal error C1076: compiler limit (转)

问题:fatal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit最近在编译一个VC6.0工程(开发环境:win2000+VS6.0+Sp6),在加入预编译头后出现了下面的编译错误提示:c:/program files/microsoft visual stu

2008-04-07 22:34:00 6100

原创 一个linux典型的select模型更新方法

bool update(int _fd, int _timeout, char *buffer)...{                //cout     fd_set fdClient;                FD_ZERO( &fdClient );        FD_SET( _fd, &fdClient );                struct timeval tv

2008-04-06 23:25:00 558

原创 JRTPLIB 文档

http://research.edm.uhasselt.be/jori/jrtplib/documentation/index.html

2008-04-06 23:22:00 1305

CppReference中文版

CppReference 中文版 C/C++ 语言参考

2012-05-06

Visual.Assist.X.V10.7.1903破解补丁Patch

资源来源,非常感谢作者的分享 http://download.csdn.net/detail/piggyxp/4214772 这里只是方便没分的同学。

2012-04-17

SecureCRT v.6.7.1破解补丁

原帖 http://download.csdn.net/detail/gzfang/3660044 方便没有积分的童鞋。

2011-10-08

韩顺平 servlet 全部源代码(包括数据库建表)

韩顺平 servlet 全部源代码(包括数据库建表)

2011-01-05

VMP脱壳脚本(VMProtect)

VMP脱壳脚本,VMProtect脱壳,VMP脱壳, 脚本支持1.7--2.0版本, 对1.7以下版本稍微修改即可 来源自 http://download.csdn.net/source/2669304

2010-11-20

APIhook实现数据包截获

可以选择指定的进程进行数据包截获,完整的代码 来源于,http://download.csdn.net/source/540262

2010-11-10

微软 httpcfg 工具,修改Http.sys

不多说,微软 httpcfg 工具,修改Http.sys

2010-10-14

Visual.Assist.X.V10.6.1833 破解 补丁 dll

直接替换, 安装文件http://www.wholetomato.com/binaries/VA_X_Setup1833.exe

2010-10-08

Visual.Assist.X.V10.6.1827的破解补丁

感谢吾爱破解论坛提供的破解补丁,破解方式为安装原版文件,然后将解压出来的补丁,拷贝到安装目录执行即可 注意啊,这次的这个补丁不是拷贝的,就地解压出exe,运行,点patch就成。win7的话,记得用管理员身份,否则会报告找不到那个dll;浏览找的话,也会说正在使用,无法访问。后面需要输入两遍用户名。 详情请他的博客 http://blog.csdn.net/PiggyXP

2010-07-09

TOAD FOR SQL Server 4.6 注册文件

先到 http://www.toadsoft.com/toadsqlserver/toad_sqlserver.htm下载官方免费版的Toad for SQL Server Freeware 4.6,然后用本资源的中的ToadPro.dll替换安装后的文件,启动程序后输入注册码:0000000000000000000000000,这会把该版本更新为试用版,并有10000次的试用机会,同时所有商用功能均已开放. TOAD FOR SQL Server 4.6 注册文件Toad for SQL Server Freeware 4.6 破解程序.Toad for SQL Server 是一款完全可以代替SQL Server Management Studio 的SQL数据库管理工具,它具有独一无二的集成调试功能、SQL代码美化、SQL优化、数据库的综合比较和同步等功能,现在官方已发布最新的免费版,但一些高级功能被屏蔽了,利用该程序可以将这些功能重新开放.使用方法:

2010-07-09

Visual Assist X 10.6.1823 破解 文件 dll

Visual Assist X 10.6.1823破解文件

2010-05-18

高通QXDM工具使用指导书

是关于高通QXDM工具使用的指导书,中文档

2010-05-05

Visual C# 2008 程序设计经典案例设计与实现

Visual C# 2008程序设计经典案例设计与实现

2010-04-27

静态测试工具-Pc-Lint 简体中文 使用手册

Pc-Lint Lint 静态测试工具 简体中文 使用手册

2010-04-27

Visual Assist X 10.5.1738.0 绿色破解版

一切来自网络,与本人无关,如果侵权,联系我,立刻删除. Visual Assist X 10.5.1738.0 , VC助手,很好很强大!这是2009.10.01最新绿色注册版本!与之前的版本相比,有了长足的改进。 双击Reg.cmd即可完成绿化处理,双击UnReg.cmd即可完成卸载处理! Visual Assist X是一款非常好的Visual Studio 2008、200X插件,支持C/C++、C#、ASP、Visual Basic、Java和HTML等语言,也支持VC++6、VC++5,能自动识别各种关键字、系统函数、成员变量、自动给出输入提示、自动更正大小写错误、自动标示错误等,有助于提高开发过程地自动化和开发效率。

2010-03-24

BREW 初级开发者 教程(共17章)

BREW 初级开发者 教程(共17章) 此教程适合已经入门的初级开发者进一步编写更强功能的BREW程序,通过研习这些教程,开发者可以开发出大量的主流应用程序。

2010-03-23

BREW 开发者 进阶教程(共18章)

BREW 开发者 进阶教程(共18章) 此教程适合已经熟练的开发者进一步编写更强功能的BREW程序,通过研习这些教程,开发者可以开发出包括网络应用在内的高级应用程序。

2010-03-23

CDMA 空中接口技术 part5

共5个压缩包 CDMA空中接口技术 目录 基 础 篇 第一章 概述 2 1.1 引言 2 1.2 移动通信系统 2 1.3 空中接口 6 1.3.1 接口 6 1.3.2 空中接口 7 1.3.3 业务 7 1.4 空中接口的处理机制 8 1.4.1 基站发现 8 1.4.2 终端发现 9 1.4.3 身份识别 10 1.4.4 安全 11 1.4.5 切换 12 1.5 小结 13 第二章 无线基础 14 2.1 引言 14 2.2 无线电波的传播 14 ............... .............

2010-03-14

CDMA 空中接口技术 part4

共5个压缩包 CDMA空中接口技术 目录 基 础 篇 第一章 概述 2 1.1 引言 2 1.2 移动通信系统 2 1.3 空中接口 6 1.3.1 接口 6 1.3.2 空中接口 7 1.3.3 业务 7 1.4 空中接口的处理机制 8 1.4.1 基站发现 8 1.4.2 终端发现 9 1.4.3 身份识别 10 1.4.4 安全 11 1.4.5 切换 12 1.5 小结 13 第二章 无线基础 14 2.1 引言 14 2.2 无线电波的传播 14 ............... .............

2010-03-14

CDMA 空中接口技术 part3

共5个压缩包 CDMA空中接口技术 目录 基 础 篇 第一章 概述 2 1.1 引言 2 1.2 移动通信系统 2 1.3 空中接口 6 1.3.1 接口 6 1.3.2 空中接口 7 1.3.3 业务 7 1.4 空中接口的处理机制 8 1.4.1 基站发现 8 1.4.2 终端发现 9 1.4.3 身份识别 10 1.4.4 安全 11 1.4.5 切换 12 1.5 小结 13 第二章 无线基础 14 2.1 引言 14 2.2 无线电波的传播 14 ............... .............

2010-03-14

CDMA 空中接口技术 part2

共5个压缩包 CDMA空中接口技术 目录 基 础 篇 第一章 概述 2 1.1 引言 2 1.2 移动通信系统 2 1.3 空中接口 6 1.3.1 接口 6 1.3.2 空中接口 7 1.3.3 业务 7 1.4 空中接口的处理机制 8 1.4.1 基站发现 8 1.4.2 终端发现 9 1.4.3 身份识别 10 1.4.4 安全 11 1.4.5 切换 12 1.5 小结 13 第二章 无线基础 14 2.1 引言 14 2.2 无线电波的传播 14 ............... .............

2010-03-14

CDMA 空中接口技术 part1

共5个压缩包 CDMA空中接口技术 目录 基 础 篇 第一章 概述 2 1.1 引言 2 1.2 移动通信系统 2 1.3 空中接口 6 1.3.1 接口 6 1.3.2 空中接口 7 1.3.3 业务 7 1.4 空中接口的处理机制 8 1.4.1 基站发现 8 1.4.2 终端发现 9 1.4.3 身份识别 10 1.4.4 安全 11 1.4.5 切换 12 1.5 小结 13 第二章 无线基础 14 2.1 引言 14 2.2 无线电波的传播 14 ............... .............

2010-03-14

linux 0.11 源码 中文注释

/* * linux/init/main.c * * (C) 1991 Linus Torvalds */ #define __LIBRARY__ // 定义该变量是为了包括定义在unistd.h 中的内嵌汇编代码等信息。 #include <unistd.h> // *.h 头文件所在的默认目录是include/,则在代码中就不用明确指明位置。 // 如果不是UNIX 的标准头文件,则需要指明所在的目录,并用双引号括住。 // 标准符号常数与类型文件。定义了各种符号常数和类型,并申明了各种函数。 // 如果定义了__LIBRARY__,则还包括系统调用号和内嵌汇编代码_syscall0()等。 #include <time.h> // 时间类型头文件。其中最主要定义了tm 结构和一些有关时间的函数原形。 /* * we need this inline - forking from kernel space will result * in NO COPY ON WRITE (!!!), until an execve is executed. This * is no problem, but for the stack. This is handled by not letting * main() use the stack at all after fork(). Thus, no function * calls - which means inline code for fork too, as otherwise we * would use the stack upon exit from 'fork()'. * * Actually only pause and fork are needed inline, so that there * won't be any messing with the stack from main(), but we define * some others too. */ /* * 我们需要下面这些内嵌语句 - 从内核空间创建进程(forking)将导致没有写时复制(COPY ON WRITE)!!! * 直到一个执行execve 调用。这对堆栈可能带来问题。处理的方法是在fork()调用之后不让main()使用 * 任何堆栈。因此就不能有函数调用 - 这意味着fork 也要使用内嵌的代码,否则我们在从fork()退出 * 时就要使用堆栈了。 * 实际上只有pause 和fork 需要使用内嵌方式,以保证从main()中不会弄乱堆栈,但是我们同时还 * 定义了其它一些函数。 */ static inline _syscall0 (int, fork) // 是unistd.h 中的内嵌宏代码。以嵌入汇编的形式调用 // Linux 的系统调用中断0x80。该中断是所有系统调用的 // 入口。该条语句实际上是int fork()创建进程系统调用。 // syscall0 名称中最后的0 表示无参数,1 表示1 个参数。 static inline _syscall0 (int, pause) // int pause()系统调用:暂停进程的执行,直到 // 收到一个信号。 static inline _syscall1 (int, setup, void *, BIOS) // int setup(void * BIOS)系统调用,仅用于 // linux 初始化(仅在这个程序中被调用)。 static inline _syscall0 (int, sync) // int sync()系统调用:更新文件系统。 #include <linux/tty.h> // tty 头文件,定义了有关tty_io,串行通信方面的参数、常数。 #include <linux/sched.h> // 调度程序头文件,定义了任务结构task_struct、第1 个初始任务 // 的数据。还有一些以宏的形式定义的有关描述符参数设置和获取的 // 嵌入式汇编函数程序。 #include <linux/head.h> // head 头文件,定义了段描述符的简单结构,和几个选择符常量。 #include <asm/system.h> // 系统头文件。以宏的形式定义了许多有关设置或修改 // 描述符/中断门等的嵌入式汇编子程序。 #include <asm/io.h> // io 头文件。以宏的嵌入汇编程序形式定义对io 端口操作的函数。 #include <stddef.h> // 标准定义头文件。定义了NULL, offsetof(TYPE, MEMBER)。 #include <stdarg.h> // 标准参数头文件。以宏的形式定义变量参数列表。主要说明了-个 // 类型(va_list)和三个宏(va_start, va_arg 和va_end),vsprintf、 // vprintf、vfprintf。 #include <unistd.h> #include <fcntl.h> // 文件控制头文件。用于文件及其描述符的操作控制常数符号的定义。 #include <sys/types.h> // 类型头文件。定义了基本的系统数据类型。 #include <linux/fs.h> // 文件系统头文件。定义文件表结构(file,buffer_head,m_inode 等)。 static char printbuf[1024]; // 静态字符串数组。 extern int vsprintf (); // 送格式化输出到一字符串中(在kernel/vsprintf.c,92 行)。 extern void init (void); // 函数原形,初始化(在168 行)。 extern void blk_dev_init (void); // 块设备初始化子程序(kernel/blk_drv/ll_rw_blk.c,157 行) extern void chr_dev_init (void); // 字符设备初始化(kernel/chr_drv/tty_io.c, 347 行) extern void hd_init (void); // 硬盘初始化程序(kernel/blk_drv/hd.c, 343 行) extern void floppy_init (void); // 软驱初始化程序(kernel/blk_drv/floppy.c, 457 行) extern void mem_init (long start, long end); // 内存管理初始化(mm/memory.c, 399 行) extern long rd_init (long mem_start, int length); //虚拟盘初始化(kernel/blk_drv/ramdisk.c,52) extern long kernel_mktime (struct tm *tm); // 建立内核时间(秒)。 extern long startup_time; // 内核启动时间(开机时间)(秒)。

2009-11-19

最新的Visual Assist X 1738 patch crack

绝对是vc 绝佳助手。本补丁来自互联网,请勿用于商业用途,只为交流学习之用,本人不承担任何法律及其连带责任! 原安装文件可以到官方下载http://www.wholetomato.com/downloads/default.asp 怎么使用补丁,就不要我教了吧

2009-10-13

最新的Visual Assist X 1727 patch crack

绝对是vc 绝佳助手。本补丁来自互联网,请勿用于商业用途,只为交流学习之用,本人不承担任何法律及其连带责任! 原安装文件可以到官方下载http://www.wholetomato.com/downloads/default.asp

2009-06-25

Visual Assist X 10.4.1635.0 破解补丁

绝对是vc 绝佳助手.这是破解补丁, 2008.04.18发布. 不过这版中文注解乱码还是没有解决,不知道是不是破解版的缘故. 1626好像没这个问题. 本补丁来自互联网,请勿用于商业用途,只为交流学习之用,本人不承担任何法律及其连带责任! 附安装文件下载地址 http://www.wholetomato.com/binaries/VA_X_Setup1635.exe

2008-05-01

多播 Multicast Socket示例

去掉了下载分限制对于UDP组播的一些认识 利用UDP组播能在intarnet,internet上也数据报的形式进行数据的组播(在internet上进行组播,要求路由器支持IGMP(internet网关管理协议,这个协议是在IP出现以后,为了支持组播而出现的)).相对于极度消耗网络带宽的广播来说(广播只能在intranet内广播),UDP组播有了很大的优化,只有终端加入到了一个广播组,UDP组播的数据才能被他接受到. UDP组播是采用的无连接,数据报的连接方式,所以是不可靠的.也就是数据能不能到达接受端和数据到达的顺序都是不能保证的.但是由于UDP不用保证数据的可靠性,所有数据的传送速度是很快的.1. 组播的“根” 组播从概念上来讲分为两部分:控制部分和数据部分。控制部分决定着组播的对象的组织方式。而数据部分决定了数据的传输方式。 控制层有“有根”,“无根”两种情况。对于有根的控制层,存在着一个root和若干个leaf. root负责管理这个组播组,只有他能邀请一个leaf加入一个组播组(ATM就是有根控制的一个典型的例子)。对于无根的控制层,没有root,只有若干的leaf. 每一个leaf都能自己加入一个组播组(IP就是无根控制的典型例子) 数据层也有“有根”,“无根”两种情况。对于有根数据层,从root发出的数据能到达每一个leaf,而从leaf发出的数据只能到达root.对于无根数据层,每一个leaf发出的数据能到达组播组中的每一个leaf(甚至包括他自己)。每一个leaf也能接受组播组里的任何数据包。二.IP组播地址 IP组播通信需要一个特殊的组播地址.IP组播地址是一组D类IP地址,范围从224.0.0.0 到 239.255.255.255。其中还有很多地址是为特殊的目的保留的。224.0.0.0到224.0.0.255的地址最好不要用,因为他们大多是为了特殊的目的保持的(比如IGMP协议)三.IGMP协议 IGMP(internet网关管理协议)是IP组播的基础.在IP协议出现以后,为了加入对组播的支持,IGMP产生了。IGMP所做的实际上就是告诉路由器,在这个路由器所在的子网内有人对发送到某一个组播组的数据感兴趣,这样当这个组播组的数据到达后面,路由器就不会抛弃它,而是把他转送给所有感兴趣的客户。假如不同子网内的A,B要进行组播通信,那么,位与A,B之间的所有路由器必须都要支持IGMP协议,否则A,B之间不能进行通信。 当一个应用加入一个组播组后,就会向这个子网的所有路由器发送一个IGMP加入命令,告诉他子网内有人对发送到某一个组播组的数据感兴趣.路由器也会定时向子网内的所有终端发送一条查询消息,用于询问是否还有人对某个组播组的数据感兴趣。如果有的话,终端就会回应一条IGMP消息,路由器则继续转发这个组播组的数据。如果没有人回应这条消息,那么路由器就认为已经没有终端对这个组播组的数据感兴趣,就不会在转发关于这个组播组的数据了。在IGMP第二版中,一个终端推出组播组以后,会向路由器发送一个推出消息,路由器也会通过这个消息来判断是否还要继续转发关于这个组播组的数据了(IGMP第一版中没有这个功能)[这些事情都是底层的系统做的,你只要坐享其成就好了] 四. winsock 1组播 winsock 1的组播主要有以下几个步骤:1. 建立支持数据报的scoket2. 把socket和本地的一个端口绑定(以后会通过这个端口进行数据的收发)3. 通过setsockopt IP_ADD_MEMBERSHIP加入一个组播组4. 然后就能通过sendto / recvfrom进行数据的收法5. 通过 setsockopt IP_DROP_MEMBERSHIP离开一个组播组6. 关闭socket如果你仅仅是想向一个组播组发送数据,而不要接受数据,那么可不用加入组播组,而直接通过sendto向组播组发送数据五.winsock 2组播 winsock 2组播主要是通过WSAJoinLeaf来实现的(WSAJoinLeaf的行为,返回值根据socket的模式,组播的实现构架有很大的关系) winsock 2组播的主要有以下几个步骤1. 建立支持数据报的socket(用WSASocket建立socket,同2. 时设置组播的一些属性)3. 把socket和本地的一个端口绑定(以后会通过这个端口进行数据的收发)4. 通过WSAJoinLeaf加入一个组播组5. 通过sendto / recvfrom进行数据的收发6. 直接关闭socket,7. 退出组播组

2007-10-05

Visual Assist X 10.3.1561.0 破解补丁

Visual Assist X 10.3.1561.0 目前最新2007.09.13更新. 绝对是vc 绝佳助手.这是破解补丁.直接替换安装文件,注册. 本补丁只是为了学习研究目的.如果你喜欢本软件,请购买正版 原版下载安装: http://www.wholetomato.com/binaries/VA_X_Setup1561.exe

2007-09-29

WSAEventSelect 线程池 实现服务器示例

用WSAEventSelect结合线程池实现的服务器示例.希望能够帮助到那些热爱网络,但又迷失方向的朋友.

2007-09-25

专家门诊 Visual C 开发答疑300问+源码

我想把下载分去掉,方便更多的朋友,不知道怎么设置啊? 看很多人再找,就做了个PDF,简单的更新了书签,方便阅读.这个文件包里包含PDF书,还有光盘源码. 专家门诊—Visual C 开发答疑300问 配套光盘代码;本书精选了300多个在Visual C 程序设计中经常遇到的问题和典型的功能需求,以专家解答的方式展现给读者。本书内容涵盖开发工具与调试、Visual C 6.0编程基础、对话框及控件的使用、一般窗口及界面设计、SDI和MDI窗口、消息系统钩子函数及DLL、磁盘路径与文件操作、数据库、网络与通信、图形图像及打印控制、操作系统、线程及进程控制、时间控制、数学算法、发布程序等Visual C 开发的各个方面,重点突出程序设计实用性。每个问答或者需求都根据技术难度不同加以标识,并给出在实际开发中的人气指数

2007-09-19

多播 Multicast Socket

对于UDP组播的一些认识<br><br> 利用UDP组播能在intarnet,internet上也数据报的形式进行数据的组播(在internet上进行组播,要求路由器支持IGMP(internet网关管理协议,这个协议是在IP出现以后,为了支持组播而出现的)).相对于极度消耗网络带宽的广播来说(广播只能在intranet内广播),UDP组播有了很大的优化,只有终端加入到了一个广播组,UDP组播的数据才能被他接受到.<br> UDP组播是采用的无连接,数据报的连接方式,所以是不可靠的.也就是数据能不能到达接受端和数据到达的顺序都是不能保证的.但是由于UDP不用保证数据的可靠性,所有数据的传送速度是很快的.<br><br>1. 组播的“根”<br> 组播从概念上来讲分为两部分:控制部分和数据部分。控制部分决定着组播的对象的组织方式。而数据部分决定了数据的传输方式。<br> 控制层有“有根”,“无根”两种情况。对于有根的控制层,存在着一个root和若干个leaf. root负责管理这个组播组,只有他能邀请一个leaf加入一个组播组(ATM就是有根控制的一个典型的例子)。对于无根的控制层,没有root,只有若干的leaf. 每一个leaf都能自己加入一个组播组(IP就是无根控制的典型例子)<br> 数据层也有“有根”,“无根”两种情况。对于有根数据层,从root发出的数据能到达每一个leaf,而从leaf发出的数据只能到达root.对于无根数据层,每一个leaf发出的数据能到达组播组中的每一个leaf(甚至包括他自己)。每一个leaf也能接受组播组里的任何数据包。<br><br><br>二.IP组播地址<br> IP组播通信需要一个特殊的组播地址.IP组播地址是一组D类IP地址,范围从224.0.0.0 到 239.255.255.255。其中还有很多地址是为特殊的目的保留的。224.0.0.0到224.0.0.255的地址最好不要用,因为他们大多是为了特殊的目的保持的(比如IGMP协议)<br><br>三.IGMP协议<br> IGMP(internet网关管理协议)是IP组播的基础.在IP协议出现以后,为了加入对组播的支持,IGMP产生了。IGMP所做的实际上就是告诉路由器,在这个路由器所在的子网内有人对发送到某一个组播组的数据感兴趣,这样当这个组播组的数据到达后面,路由器就不会抛弃它,而是把他转送给所有感兴趣的客户。假如不同子网内的A,B要进行组播通信,那么,位与A,B之间的所有路由器必须都要支持IGMP协议,否则A,B之间不能进行通信。<br> 当一个应用加入一个组播组后,就会向这个子网的所有路由器发送一个IGMP加入命令,告诉他子网内有人对发送到某一个组播组的数据感兴趣.路由器也会定时向子网内的所有终端发送一条查询消息,用于询问是否还有人对某个组播组的数据感兴趣。如果有的话,终端就会回应一条IGMP消息,路由器则继续转发这个组播组的数据。如果没有人回应这条消息,那么路由器就认为已经没有终端对这个组播组的数据感兴趣,就不会在转发关于这个组播组的数据了。在IGMP第二版中,一个终端推出组播组以后,会向路由器发送一个推出消息,路由器也会通过这个消息来判断是否还要继续转发关于这个组播组的数据了(IGMP第一版中没有这个功能)[这些事情都是底层的系统做的,你只要坐享其成就好了]<br><br> <br><br>四. winsock 1组播<br> winsock 1的组播主要有以下几个步骤:<br>1. 建立支持数据报的scoket<br>2. 把socket和本地的一个端口绑定(以后会通过这个端口进行数据的收发)<br>3. 通过setsockopt IP_ADD_MEMBERSHIP加入一个组播组<br>4. 然后就能通过sendto / recvfrom进行数据的收法<br>5. 通过 setsockopt IP_DROP_MEMBERSHIP离开一个组播组<br>6. 关闭socket<br><br>如果你仅仅是想向一个组播组发送数据,而不要接受数据,那么可不用加入组播组,而直接通过sendto向组播组发送数据<br><br><br>五.winsock 2组播<br> winsock 2组播主要是通过WSAJoinLeaf来实现的(WSAJoinLeaf的行为,返回值根据socket的模式,组播的实现构架有很大的关系)<br> winsock 2组播的主要有以下几个步骤<br>1. 建立支持数据报的socket(用WSASocket建立socket,同2. 时设置组播的一些属性)<br>3. 把socket和本地的一个端口绑定(以后会通过这个端口进行数据的收发)<br>4. 通过WSAJoinLeaf加入一个组播组<br>5. 通过sendto / recvfrom进行数据的收发<br>6. 直接关闭socket,<br><br>7. 退出组播组<br>

2007-08-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除