您现在的位置是: 软件 > 开发者网络 > 程序方舟 > Java专栏 > 正文


-Win xp中的多种网络
-试验试验试验试验
-用Freehand实现位图矢量化
-网络电话面面观

使用Java制作多点发送程序
2001-03-14· ·林建刚 ··yesky

上一页  1 2 3  


  程序2(MultiCastReceiver.java)通过接收多点发送的数据报实现了发送者。该应用程序有两个参数,这两个参数必须对应于IP地址和用来激活MultiCastSender的端口。Main()方法首先检查命令的参数,然后创建一个MultiCastReceiver对象。该对象的构造器用在激活该应用程序的端口上创建一个InetAddress和一个MulticastSocket。在包含于InetAddress的地址加入多点发送者,然后进入一个循环。该对象的构造器从一个套接字接收数据报并打印出包含在数据报中数据,包括发送数据包的计算机和端口。

   程序2(MultiCastReceiver)的源代码如下:

    import java.net.*; // Import package names used.

    import java.io.*;

    class MultiCastReceiver {

     private static final int DATAGRAM_BYTES = 1024;

     private int mulcastPort;

     private InetAddress mulcastIP;

     private MulticastSocket mulcastSocket;

     private boolean keepReceiving = true;

     public static void main(String[] args) {

      // This must be the same port and IP address used by the sender.

      if (args.length != 2) {

       System.out.print("Usage: MultiCastReceiver \n\t can be one of " + "224.x.x.x - 239.x.x.x\n");

       System.exit(1);

      }

     multiCastReceiver send = new MultiCastReceiver(args);

       System.exit(0);

       }

     public MultiCastReceiver(String[] args) {

      DatagramPacket mulcastPacket; // Packet to receive.

      byte[] mulcastBuffer; // byte[] array buffer

      InetAddress fromIP; file:// Sender address.

      int fromPort; // Sender port.

      String mulcastMsg; // String of message.

     try {

       // First, set up your receiving socket.

      mulcastIP = InetAddress.getByName(args[0]);

      mulcastPort = Integer.parseInt(args[1]);

      mulcastSocket = new MulticastSocket(mulcastPort);

      // Join the multicast group.

      mulcastSocket.joinGroup(mulcastIP);

      } catch(UnknownHostException excpt) {

       System.err.println("Unknown address: " + excpt);

       System.exit(1);

      } catch(IOException excpt) {

       System.err.println("Unable to obtain socket: " + excpt);

       System.exit(1);

      }

      while (keepReceiving) {

      try {

       // Create a new datagram.

       mulcastBuffer = new byte[DATAGRAM_BYTES];

       mulcastPacket = new DatagramPacket(mulcastBuffer, mulcastBuffer.length);

       // Receive the datagram.

       mulcastSocket.receive(mulcastPacket);

       fromIP = mulcastPacket.getAddress();

       fromPort = mulcastPacket.getPort();

       mulcastMsg = new String(mulcastPacket.getData());

       // Print out the data.

       System.out.println("Received from " + fromIP + " on port " + fromPort + ": " +                   mulcastMsg);

       } catch(IOException excpt) {

      system.err.println("Failed I/O: " + excpt);

      }

     }

    try {

     mulcastSocket.leaveGroup(mulcastIP); file:// Leave the group.

      } catch(IOException excpt) {

     System.err.println("Socket problem leaving group: " + excpt);

     }

     mulcastSocket.close();    // Close the socket.

    }

   public void stop() {

    if (keepReceiving) {

     keepReceiving = false;

     }

    }

   }

  若要运用该应用程序,先编译MultiCastSender和MultiCastReceiver,然后将MultiCastReceiver传送到其它机器,以便能够演示多个参与者接收报文的情况,最后Java解释器运行该应用程序。例如:要向225.2.32.6组在端口1111上发送多点发送报文,应按如下方法进行:

   -/class ->java MultiCastSender225.2.32.6 1111

   Here is just to test multicast message.

   Sending: Here is just to test multicast message.

   Do you received it?

   Sending: Do you received it?

要接收这些报文,应在一个或多个系统上运行MultiCastReceiver应用程序,这些系统应该加入同一个多点发送组225.2.32.6,并在相同的端口1111上侦听:

   -/class ->java MultiCastReceiver 225.2.32.6 1111

   Received from 225.106.36.32 on port 32911: Here is just to test multicast message.

   Received from 225.106.36.32 on port 32911: Do you received it?


上一页  1 2 3  

■ 相关内容
 用JAVA实现线程等待提示框
 为apache加速
 在PHP中使用灵巧的体系结构
 用JavaMail写简易电子邮件发送系统
 Mysql学习点滴
 用XML数据岛解决用户界面问题
 利用Delphi扩充VB函数
 C++中的动态多维数组
 98/nt/win2K多系统共存与重装
 Swish 快速上手指南
 为数据库建立索引
 Win98、Win2K多重操作系统卸载法
 HTML详解之快速精通FRAME
 java学习体悟
 PowerBuilder应用开发系列讲座
 WEB服务器配置全功略
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!