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),\r\n",i,arb[i],arb[i]); } else { System.out.printf("data[%4d] = 0x%02x,\r\n",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里面添加路径“.”,表示包含当前目录。
——————无论在哪里做什么,只要坚持服务、创新、创造价值,其他的东西自然都会来的。