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里面添加路徑“.”,表示包含當前目錄。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM