JAVA UDP组播绑定网卡发送消息,一般情况下都有效果
//本地有两块网卡的情况下,手动添加你想用的那张网卡的ip,0为本地端口号0-65536随便给
InetSocketAddress inetSocketAddress = new InetSocketAddress(InetAddress.getByName("7.1.21.18"),0);
try (MulticastSocket socket = new MulticastSocket(inetSocketAddress);) {
//TTL从字面上翻译,是可以存活的时间,但实际上TTL是IP数据包在计算机网络中可以转发的最大跳数,1为本地网络
socket.setTimeToLive(255);
InetAddress mcastaddr = InetAddress.getByName(host); //host为要发送的组播地址
socket.joinGroup(mcastaddr);// 加入 组播组
//将数据转换成byte数组发送
byte[] sendMsg = "66666".getBytes();
// 待发送数据包
DatagramPacket pack = new DatagramPacket(sendMsg, sendMsg.length,mcastaddr, mcastPort); //mcastPort为要发送的组播端口号
// 组播发送数据报,可被group成员接收到
socket.send(pack);
System.out.print("已发送");
} catch (Exception e) {
e.printStackTrace();
}
网友评论