| | | 使用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 | | | 感谢
访问天极网,如果您觉得该文章涉及版权问题,请看这里!
|
|