📄 multicastconnection.java
字号:
import java.io.*;
import java.net.*;
public class MulticastConnection
{
public static final int DEFAULT_PORT = 1234;
// 连接、发送和接收消息用的多点传送
protected MulticastSocket mcSocket;
// 属于多点传送群中的一个IP地址
protected InetAddress groupAddress;
// 连接用的端口号
protected int port;
// 发送和接收消息的IP 报
protected DatagramPacket dataPacket;
// 接收和发送数据报用的 byte数组
protected byte[] data;
// 一个数据报可以容纳的字节的最大数目
protected final int PACKET_SIZE = 1024;
// 用给定的地址和端口创建一个新的MulticastConnection对象
public MulticastConnection(String address, int portNo) throws Exception
{
// 将给定的地址解析为有效的IP地址
groupAddress = InetAddress.getByName(address);
port = portNo;
// 取保端口号有效
mcSocket = (port > 0) ? new MulticastSocket(port) : new MulticastSocket(DEFAULT_PORT);
// 将socket连接到IP地址群
mcSocket.joinGroup(groupAddress);
data = null;
}
// 试图从群中断开
public void disconnect()
{
if(mcSocket == null) return;
try
{
mcSocket.leaveGroup(groupAddress);
}
catch(IOException e)
{
// 在这里处理错误信息...
}
}
// 尝试从群中接收一个数据报
public String recv()
{
data = new byte[PACKET_SIZE];
dataPacket = new DatagramPacket(data,data.length);
try
{
mcSocket.receive(dataPacket);
}
catch(IOException e)
{
return "";
}
// 将数据报中的原始字节转化为一个有效的String对象
return new String(dataPacket.getData()).trim();
}
// 尝试将指定的String对象作为一个IP数据报发送出去
public boolean send(String msg)
{
dataPacket = new DatagramPacket(
msg.getBytes(), msg.length(), groupAddress, port);
try
{
mcSocket.send(dataPacket);
}
catch(IOException e)
{
return false;
}
return true;
}
} // MulticastConnection
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -