5.2 udp 客户服务中心、客户端通讯
DESCRIPTION
5.2 UDP 客户服务中心、客户端通讯. 信息工程系 向模军. Tel: Email: QQ:. 13684285460 [email protected] 156638267. 1 任务引入. 在基于 UDP 的通讯模式中,客户服务中心负责客户端登录管理和状态管理。 - PowerPoint PPT PresentationTRANSCRIPT
2/11
四川机电职业技术学院http://www.scemi.com
5.2 UDP客户服务中心、客户端通讯
1 任务引入
在基于 UDP 的通讯模式中,客户服务中心负责客户端登录管理和状态管理。 客户端首先登录客户服务中心,登录成功后,客户端加入用于通讯管理的组播以监听客户服务中心的组播消息,同时客户服务中心在每个客户登录或退出后通过组播向所有客户端发送新客户加入和客户退出消息。客户服务中心周期性地通过组播通知各个客户端发送响应报文,以检查客户端是否处于离线状态。
3/11
四川机电职业技术学院http://www.scemi.com
5.2 UDP客户服务中心、客户端通讯
2 任务讨论
1. 客户端登录和退出服务器是利用单播报文。2. 客户端登录后要加入组播组,退出时要退出组播组。3. 服务器端构造组播报文,客户端接收并处理组播报文。
4/11
四川机电职业技术学院http://www.scemi.com
5.2 UDP客户服务中心、客户端通讯
3 IP 组播基本知识IP 组播 (IP 多点传送 ) 时针对点到点的传送和广播传送两种方式而言的,
是指在一定的组内对其成员进行的广播,是一种有限的广播。组中的某个成员发出的信息,组中的其他所有成员都能收到,是 UDP 通讯的一个分支。
( 1 ) IP 组播IP 组播是指一个 IP 报文向一个“机组”的传送,这个包含多个计算机的
“机组”有一个单独的 IP 地址来标示,“机组”地址称为“组播地址”,或者是 D 类地址。除了目的地址部分,组播报文与普通报文没有区别。“机组”的成员是可以动态变化的,一台计算机有权加入或退出某个“机组”,也可加入多个“机组”,可以向自己没有加入的“机组”发送数据。“机组”包括永久组和临时组两种形式。
IP 组播分支在 Internet 上的转发是由支持组播的路由器来处理的,组播报文内容将发送给网络上“机组”的所有成员,组播报文传递的范围由报文的生存期 (TTL) 决定。
( 2 )组播地址IP 组播地址根据永久组和临时组来分配,永久组的 IP 地址是有 Internet 管
理机构分配的,是保留的 D 类地址( 224.0.0.0 至 224.0.0.255 );临时组点地址则使用除永久组地址外的非保留的 D 类地址( 224.0.1.0 至239.255.255.255 )。
5/11
四川机电职业技术学院http://www.scemi.com
5.2 UDP客户服务中心、客户端通讯
3 MulticastSocket 类
MulticastSocket 类继承了 UDP DatagramSocket 类,是对DatagramSocket 类的扩展,它增加了组播 一些特定操作。
MulticastSocket 类允许用户发送和接收使用组播 IP 的数据报。若要发送或接收组播数据,首先需要创建一个组播套接字,应用 MulticastSocket 类的构造器创建缺省端口号的以及指定端口号的组播套接字。
使用 jionGroup() 方法加入到一个组播组,是由 leaveGroup() 方法脱离一个组播组。
使用 send() 方法发送组播数据,是由 receive() 方法接收组播数据。在具有多重网络接口的情况先,通过调用 setInterface() 方法可选择组播套
接在所使用的接口。
6/11
四川机电职业技术学院http://www.scemi.com
5.2 UDP客户服务中心、客户端通讯
3 MulticastSocket 类类 MulticastSocket :从 DatagramSocket 继承而来构造方法public MulticastSocket()public MulticastSocket(int port) :在指定的端口通信这两个方法都将抛出例外 IOException ,程序中需要捕获处理。
主要方法public void joinGroup(InetAddress mcastaddr) :加入一个广播组public void leaveGroup(InetAddress mcastaddr) :离开一个广播组public void setTimeToLive(int ttl) :指定数据报离开时间public void send(DatagramPacket p, byte ttl) :在指定的时间内将数据报发送
出去这四个方法都将抛出例外 IOException ,程序中需要捕获处理。
继承 DatagramSocket 的方法public void receive(DatagramPacket p) :接收数据 public void send(DatagramPacket p) :发送数据public void connect(InetAddress address, int port) :与指定的机器通信public void disconnect() :关闭指定的连接public void close() :关闭 Socket
7/11
四川机电职业技术学院http://www.scemi.com
5.2 UDP客户服务中心、客户端通讯
4 任务实施
在 JBuilder 中新建项目。在项目中建立以下 2 个包 ( 服务器端,客户端 ) 。
服务器端:1. “ 组播服务” server.multicastserverThread 类(线程),负责周期
性地构造并发送组播报文。 2. “UDP 客户服务中心主程序” server.mainThread 类,负责启动“组
播服务” 。
客户端:1. “ 组播监听” client.multicastlistenThread 类(线程),加入服务器
所在的组播组,并且监听并打印服务器端发出的组播报文。2. “ 客户端主程序” client.mainThread 类,负责启动“组播监听”。
8/11
四川机电职业技术学院http://www.scemi.com
5.2 UDP客户服务中心、客户端通讯
5 任务点评
• MulticastSocket 在调用 receive() 方法前,应调用 joinGroup() 方法,加入组播组。
• MulticastSocket 在调用 close() 方法前,应调用 leaveGroup() 方法,退出组播组。
• joinGroup() , leaveGroup() ,send() 方法要捕获 IOException 。• 客户端和服务端加入的组播 IP 和端口地址必须一致。
9/11
四川机电职业技术学院http://www.scemi.com
5.2 UDP客户服务中心、客户端通讯
6 试一试 练一练
• 将客户端和服务端放在不同的网段运行 ( 网段之间用路由器连接 ) ,看一看是否能正常工作,为什么?
10/11
四川机电职业技术学院http://www.scemi.com
5.2 UDP客户服务中心、客户端通讯
7 课外拓展
收集资料,了解组播的工作机制及其应用环境。
四川机电职业技术学院http://www.scemi.com