java写的小脚本,用来受mDNS消息

太ugly了,但是可以工作,抓了包下来,用前面DNS message structure做了下比较。

代码如下:

import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;

public class Receiver {
    private static final String TAG = null;
    private static final String Log = null;
    private String HostName;
    private static String HostIP; 
  private static int count = 4;

    public static void main(String[] args) throws Exception {
        InetAddress group = InetAddress.getByName("224.0.0.251");
        MulticastSocket s = new MulticastSocket(5353);
        byte[] arb = new byte[512];
        s.joinGroup(group);    

        while (count-- > 0) {
            DatagramPacket datagramPacket = new DatagramPacket(arb, arb.length);
            s.receive(datagramPacket);
            HostIP = datagramPacket.getAddress().getHostName();
            System.out.println(HostIP);
            for (int i = 0; i < arb.length; i++) {
                if (arb[i] > 0) {
                    System.out.printf("data[%4d] = 0x%02x (%c),
",i,arb[i],arb[i]);
                    } else {
                    System.out.printf("data[%4d] = 0x%02x,
",i,arb[i]);
                }   
            }
        }
    }
}

好吧好吧,我是第一次考虑怎么在cmd下运行java 程序。

首先,需要有jdk,需要用jdk进行编译:javac Receiver.java

ok,此时会有个名为Receiver.class的文件生成。

然后就可以run了:java Receiver

注意,上面没有.class哦。

另外,在这里通常会遇到的问题有:

1、找不到javac或者java,此时需要设置系统的环境变量,让命令行能找得到相应bin文件。

2、编译提示找不到库之类,需要把jdk的库给添加到classpath里面去。

3、运行时提示找不到类,除了上一条,你还需要在classpath里面添加路径“.”,表示包含当前目录。

原文地址:https://www.cnblogs.com/pied/p/3580290.html