這就是我想要實現的目標。我有一個帶有內置打印機的安卓設備,我可以通過串行接口訪問它。我希望使用和打印 Play 商店中的 2 個應用程序。這些應用程序僅允許通過以太網使用打印機。我寫了一個 android 應用程序來偵聽端口 9100 上的連接,任何傳入它只會將原始數據傳遞給打印機。這與其中一個應用程序的預期一樣有效。使用工作應用程序,我可以選擇指定打印機 IP。另一個應用程序不允許我指定 IP 地址,它試圖自動為我找到打印機但失敗了。我嘗試使用以下方式在網絡上宣傳該服務。https://github.com/andriydruk/RxDNSSSD try { dnssd.register("printproxy", "_printer._tcp", 9100, new RegisterListener() { @Override public void serviceRegistered(DNSSDRegistration registration, int flags, String serviceName, String regType, String domain) { Log.i("TAG", "Register successfully "); } @Override public void operationFailed(DNSSDService service, int errorCode) { Log.e("TAG", "error " + errorCode); } }); } catch (DNSSDException e) { Log.e("TAG", "error", e); }如果我在列出 bonjour 服務的設備上加載它顯示的應用程序_printer._tcp.local 打印代理 192.168.2.28:9100所以它看起來可能按預期工作。雖然需要打印機的安卓應用還是找不到。我運行了 wireshark,但并沒有對此有所了解。在掃描過程中,我可以看到應用正在探測網絡。我得到以下信息。7274 31.804692 192.168.1.28 224.0.0.251 MDNS 176 Standard query 0x0000 ANY printproxy._printer._tcp.local, "QM" question ANY Android-3.local, "QM" question ANY Android-3.local, "QM" question SRV 0 0 9100 Android-3.local A 192.168.1.28 AAAA fe80::2e0:4cff:fea8:4db97290 32.055612 192.168.1.28 224.0.0.251 MDNS 420 Standard query response 0x0000 TXT, cache flush PTR _printer._tcp.local PTR printproxy._printer._tcp.local SRV, cache flush 0 0 9100 Android-3.local PTR, cache flush Android-3.local PTR, cache flush Android-3.local A, cache flush 192.168.1.28 AAAA, cache flush fe80::2e0:4cff:fea8:4db9 NSEC, cache flush printproxy._printer._tcp.local NSEC, cache flush 28.1.168.192.in-addr.arpa NSEC, cache flush 9.B.D.4.8.A.E.F.F.F.C.4.0.E.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.E.F.ip6.arpa NSEC, cache flush Android-3.local任何幫助將非常感激。
1 回答

搖曳的薔薇
TA貢獻1793條經驗 獲得超6個贊
結果我只需要將服務更改為 _ipp 就可以在網絡上自動檢測到它。
盡管事實證明 android 應用程序正在使用 UDP 廣播進行打印機發現,并且只是等待設備返回的字符串。那是另一個問題......
添加回答
舉報
0/150
提交
取消