《Visual-C++网络编程技术-05》由会员分享,可在线阅读,更多相关《Visual-C++网络编程技术-05(21页珍藏版)》请在金锄头文库上搜索。
1、Visual-C+Visual-C+网络编程技术网络编程技术-05-05网络编程技术网络编程技术导入导入v网络会议室与聊天室程序类似,其本质就是一种网络会议室与聊天室程序类似,其本质就是一种多点群发的的通信方式。在电子教室软件的实际多点群发的的通信方式。在电子教室软件的实际应用过程中,经常需要组织分小组进行讨论,这应用过程中,经常需要组织分小组进行讨论,这时就需要建立几个组群,每个组内可以发起讨论,时就需要建立几个组群,每个组内可以发起讨论,交流意见,这就是网络会议室应用程序。本章的交流意见,这就是网络会议室应用程序。本章的网络会议室功能虽与上一章的聊天室类似,但采网络会议室功能虽与上一章的聊
2、天室类似,但采用的是一种更好的实现方法用的是一种更好的实现方法IP多播技术。多播技术。 网络编程技术网络编程技术本章要点本章要点v网络会议室功能分析设计网络会议室功能分析设计vIP广播技术广播技术vIP多播技多播技术 网络编程技术网络编程技术功能需求分析功能需求分析 网络会议室需要有以下主要功能:网络会议室需要有以下主要功能:v用户可以选择参加某个会议用户可以选择参加某个会议v用户可以在会议上发表言论,并且用户的发言会用户可以在会议上发表言论,并且用户的发言会即时传递给每个参加会议的人即时传递给每个参加会议的人v用户可以随时看到参加会议的其他人的发言用户可以随时看到参加会议的其他人的发言v用户
3、可以随时选择退出会议。需要时,还可以再用户可以随时选择退出会议。需要时,还可以再加入进来。加入进来。 网络编程技术网络编程技术界面设计界面设计 网络编程技术网络编程技术关键技术分析关键技术分析 v根据参与一次通信的对象的多少,可将通信分为根据参与一次通信的对象的多少,可将通信分为两大类:两大类:v一类是点对点通信,也称其为单播通信,一类是点对点通信,也称其为单播通信,TCP协协议仅支持这种单播通信方式议仅支持这种单播通信方式v一类是多点通信,也称为群或组通信,一类是多点通信,也称为群或组通信,UDP协议协议既支持单播通信方式,又支持多点通信方式。既支持单播通信方式,又支持多点通信方式。v本章研
4、究内容是组通信本章研究内容是组通信网络编程技术网络编程技术广播通信广播通信v所谓广播是指一种同时与网络中所有主机进行交所谓广播是指一种同时与网络中所有主机进行交互数据的通信方式,传输者通过一次数据传输就互数据的通信方式,传输者通过一次数据传输就可以使网络上的所有主机接收到这个数据信息。可以使网络上的所有主机接收到这个数据信息。v广播通信的主要用途是资源发现和减少网络数据广播通信的主要用途是资源发现和减少网络数据流量。流量。v用于指示网络中所有主机的地址称为广播地址。用于指示网络中所有主机的地址称为广播地址。广播地址有直接地址和有限地址之分。广播地址有直接地址和有限地址之分。v直接广播地址适合于
5、向一个指定网络直接广播地址适合于向一个指定网络(已知网络号已知网络号)发送数据包的情况,若不知道网络号,又要向本发送数据包的情况,若不知道网络号,又要向本地网络发送广播数据包,就需要使用有限广播地地网络发送广播数据包,就需要使用有限广播地址址255.255.255.255 。 网络编程技术网络编程技术核心程序核心程序IP广播广播 v一个一个IP广播程序分成两个部分,一个是广播端,广播程序分成两个部分,一个是广播端,一个是接收端。一个是接收端。v广播流程广播流程:网络编程技术网络编程技术广播端界面广播端界面网络编程技术网络编程技术关关键代代码v设设置套接字广播功能置套接字广播功能vsetsock
6、opt(SendSocket, SOL_SOCKET, SO_BROADCAST, (char FAR *)&op, sizeof(op);v设设置有限广播地址置有限广播地址vAddr.sin_addr.s_addr=inet_addr(255.255.255.255);网络编程技术网络编程技术代码详解代码详解Setsockopt()函数函数vsetsockopt()函数用于任意函数用于任意类型、任意状型、任意状态套接字的套接字的设置置选项值,选项影响套接字的操作。影响套接字的操作。vint PASCAL FAR setsockopt( SOCKET s, int level, int opt
7、name, const char FAR* optval, int optlen);v参数参数s:要:要设置的套接字置的套接字对象。象。v参数参数level:选项定定义的的层次,如次,如SOL_SOCKET、IPPROTO_TCP、IPPROTO_IP等。等。v参数参数optname:需:需设置的置的选项。v参数参数optval:指:指针,指向存放,指向存放选项值的的缓冲区。冲区。v参数参数optlen:optval缓冲区的冲区的长度。度。vSOL_SOCKET级别对应的参数的参数optname选项值如果是如果是SO_BROADCAST,则代表允代表允许套接字接收和套接字接收和发送广播送广播消
8、息消息网络编程技术网络编程技术接收广播信息端界面接收广播信息端界面网络编程技术网络编程技术IP多播的网多播的网络会会议室室 v多播是指一种同时与多台主机进行交互数据的通多播是指一种同时与多台主机进行交互数据的通信方式,传输者通过一次传输就将数据信息传送信方式,传输者通过一次传输就将数据信息传送给一组接收者。给一组接收者。v与广播不同的是多播只向事先规划好的多播组与广播不同的是多播只向事先规划好的多播组(由由多台主机组成多台主机组成)发送数据,而不是向某个网络的所发送数据,而不是向某个网络的所有主机发送数据。有主机发送数据。v多播组是零个或多个使用同一多播组是零个或多个使用同一IP目的地址的主机
9、目的地址的主机集合,其成员在位置上和数量上均没有任何限制。集合,其成员在位置上和数量上均没有任何限制。v多播不局限于局域网,也可用于广域网。多播不局限于局域网,也可用于广域网。 网络编程技术网络编程技术多播地址多播地址 vIP地址空地址空间被划分被划分为A、B、C三三类。第四。第四类即即D类地址被保留用做多播地址。地址被保留用做多播地址。v v从从224.0.0.0到到239.255.255.255间的所有间的所有IP地址都属于地址都属于D类地址类地址v多播地址的范围是多播地址的范围是224.0.0.0239.255.255.255 网络编程技术网络编程技术IP多播的网多播的网络会会议室室 v
10、首先我们设计了三个网络会议室,它们的多播地首先我们设计了三个网络会议室,它们的多播地址分别是址分别是“238.8.8.18”、“238.8.8.19”和和“238.8.8.20”。v用户可以选择进入哪个会议室(多播组)参与讨用户可以选择进入哪个会议室(多播组)参与讨论。论。v凡是多播组成员都可以向全组发送数据信息,且凡是多播组成员都可以向全组发送数据信息,且都可以看到本组成员发送的数据信息。都可以看到本组成员发送的数据信息。v每个成员都可以随时离开这个多播组,也可以再每个成员都可以随时离开这个多播组,也可以再次加入进来。次加入进来。 网络编程技术网络编程技术程序界面程序界面 网络编程技术网络编
11、程技术头文件和文件和库文件文件v#include v#include v#pragma comment(lib,ws2_32.lib)网络编程技术网络编程技术加入和退出多播组加入和退出多播组加入多播组代码:加入多播组代码: vsetsockopt(recvSocket,IPPROTO_IP,IP_ADD_MEMBERSHIP,(char *)&mq,sizeof(mq);退出多播组代码:退出多播组代码:vsetsockopt(recvSocket,IPPROTO_IP,IP_DROP_MEMBERSHIP,(char*)&mq, sizeof(mq);v两条代码的差别在两条代码的差别在第三个参
12、数第三个参数上。当参数上。当参数level的值是的值是IPPROTO_IP时,对应的参数时,对应的参数optname值为值为IP_ADD_MEMBERSHIP表示加入多播组,表示加入多播组,IP_DROP_MEMBERSHIP表示退出多播组。表示退出多播组。 网络编程技术网络编程技术本章技能训练实例本章技能训练实例 v局域网广播报时系统局域网广播报时系统v该程序分成两个部分,一个是发送时间数据程该程序分成两个部分,一个是发送时间数据程序,一个是接收时间程序。发送端程序取本机的序,一个是接收时间程序。发送端程序取本机的系统时间,然后以广播通信的方式发送给本网络系统时间,然后以广播通信的方式发送给本网络上的所有主机,接收端程序接收到广播的时间数上的所有主机,接收端程序接收到广播的时间数据,并在界面上显示该时间。据,并在界面上显示该时间。结束结束