快速业务通道

Java套接字编程(下) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
发送给组的自寻址包(同样客户程序也可以给这个组发送自寻址包),一旦客户程序读完所有要读的自寻址数据包,那么可以通过离开组操作离开多点传送组。

注意:IP地址224.0.0.1 到 239.255.255.255(包括)均为保留的多点传送组地址。

网络API通过MulticastSocket类和MulticastSocket,以及一些辅助类(比如NetworkInterface)支持多点传送,当一个客户程序要加入多点传送组时,就创建一个MulticastSocket对象。MulticastSocket(int port)构造函数允许应用程序指定端口(通过port参数)接收自寻址包,端口必须与服务程序的端口号相匹配,要加入多点传送组,客户程序调用两个joinGroup()方法中的一个,同样要离开传送组,也要调用两个leaveGroup()方法中的一个。

由于MulticastSocket扩展了DatagramSocket类,一个MulticastSocket对象就有权访问DatagramSocket方法。

List6是MCClient的源代码,这段代码示范了一个客户端加入多点传送组的例子。

Listing 6: MCClient.java // MCClient.java import java.io.*; import java.net.*; class MCClient {   public static void main (String [] args) throws IOException   {    // Create a MulticastSocket bound to local port 10000. All    // multicast packets from the server program are received    // on that port.    MulticastSocket s = new MulticastSocket (10000);    // Obtain an InetAddress object that contains the multicast    // group address 231.0.0.1. The InetAddress object is used by    // DatagramPacket.    InetAddress group = InetAddress.getByName ("231.0.0.1");    // Join the multicast group so that datagram packets can be    // received.    s.joinGroup (group);    // Read several datagram packets from the server program.    for (int i = 0; i < 10; i++)    {     // No line will exceed 256 bytes.     byte [] buffer = new byte [256];     // The DatagramPacket object needs no addressing     // information because the socket contains the address.     DatagramPacket dgp = new DatagramPacket (buffer,        buffer.length);     // Receive a datagram packet.     s.receive (dgp);     // Create a second byte array with a length that matches     // the length of the sent data.     byte [] buffer2 = new byte [dgp.getLength ()];     // Copy the sent data to the second byte array.     System.arraycopy (dgp.getData (),          0,          buffer2,          0,          dgp.getLength ());     // Print the contents of the second byte array. (Try     // printing the contents of buffer. You will soon see why     // buffer2 is used.)     System.out.println (new String (buffer2));    }    // Leave the multicast group.    s.leaveGroup (group);    // Close the socket.    s.close ();   } }

Java套接字编程(下)(5)

时间:2010-12-19

MCClient创建了一个绑定端口号10000的MulticastSocket对象,接下来他获得了一个InetAddress子类对象,该子类对象包含多点传送组的IP地址231.0.0.0,然后通过joinGroup(InetAddress addr)方法加入多点传送组中,接下来MCClient接收10个自寻址包,同时输出他们的内容,然后使用leaveGroup(InetAddress addr)方法离开传送组,最后关闭套接字。

也许你对使用两

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号