我可能对绑定这个术语有一个基本的误解,但我对
MulticastSocket及其构造函数的使用感到困惑.他们不会做我理解他们应该做的事应该这样做,任何能帮助我清除我的误解的人都会受到赞赏.
首先是我想要实现的目标.我曾尝试编写一个简短的程序,创建MulticastSocket在特定的网络适配器上绑定它(即监听),然后加入特定的多播组.我已经尝试了以下(客户端)代码,该代码工作正常,我可以在没有多播套接字超时的情况下组播数据包.
public class Main {
public static final int DEFAULT_MULTICAST_PORT = 5555;
public static final String multicastGroup = "225.4.5.6";
public static final String adapterName = "eth0";
public static final int MAX_PACKET_SIZE = 65507;
CharBuffer charBuffer = null;
Charset charset = Charset.defaultCharset();
CharsetDecoder decoder = charset.newDecoder();
static ByteBuffer message = ByteBuffer.allocateDirect(MAX_PACKET_SIZE);
static boolean loop = true;
static byte[] buffer = new byte[MAX_PACKET_SIZE];
public static void main(String[] args) {
try {
//MulticastSocket mSocket = new MulticastSocket(new InetSocketAddress("192.168.2.23", DEFAULT_MULTICAST_PORT));
MulticastSocket mSocket = new MulticastSocket(DEFAULT_MULTICAST_PORT);
mSocket.setReuseAddress(true);
mSocket.setSoTimeout(5000);
NetworkInterface nic = NetworkInterface.getByName(adapterName);
mSocket.joinGroup(new InetSocketAddress(multicastGroup, DEFAULT_MULTICAST_POR