我在iOS应用中实现了打印功能。我的iPad在同一个Wi-Fi上连接到AirPrint打印机。在给出打印命令之前,是否可以在iOS应用程序中获取打印机的序列号或Mac地址?
答案 0 :(得分:0)
您可以使用两阶段方法:
arp
我无法为您提供代码...但命令行实用程序dns-sd
将用于演示第一步。
无论此命令行可以返回给您什么信息,dns-sd库API也可以这样做。有关详情,请参阅 /usr/include/dns_sd.h
....
以下概述了第一阶段要遵循的步骤。
假设您要查找域dns-sd.org.
中所有支持AirPrint的设备的实例名称...
然后你会使用:
dns-sd -B _ipp._tcp.,_universal dns-sd.org. Browsing for _ipp._tcp.,_universal.dns-sd.org. DATE: ---Sat 02 Jul 2016--- 14:20:07.190 ...STARTING... Timestamp A/R Flags if Domain Service Type Instance Name 14:20:07.626 Add 2 0 dns-sd.org. _ipp._tcp. Stuart's Home AirPrint Printer ^C
(请注意,_universal
后缀[请求AirPrint子集]到_ipp._tcp.
的标准查询,该查询请求所有支持IPP的通用打印设备的列表......)
您现在找到了一个名为“Stuart's Home AirPrint Printer”的实例。
您现在可以查询托管服务实例的网络节点的主机名“Stuart的Home AirPrint打印机”:
dns-sd -L "Stuart's Home AirPrint Printer" _ipp._tcp. dns-sd.org. Lookup Stuart's Home AirPrint Printer._ipp._tcp..dns-sd.org. DATE: ---Sat 02 Jul 2016--- 14:37:44.436 ...STARTING... 14:37:44.813 Stuart's\032Home\032AirPrint\032Printer._ipp._tcp.dns-sd.org. can be reached at airprint.dns-sd.org.:631 (interface 0) txtvers=1 \ qtotal=1 \ pdl=application/postscript,application/vnd.hp-PCL,application/vnd.hp-PCLXL,application/pdf,image/urf \ rp=ipp/printer \ URF=CP99,W8,OB10,PQ3-4-5,ADOBERGB24,DEVRGB24,DEVW8,SRGB24,IS1-2-4,MT1-2-3-5-12,MT1-2-3-5-12,RS600 \ ty=HP\ LaserJet\ 400\ color\ M451nw \ product=\(HP\ LaserJet\ 400\ color\ M451nw\) \ priority=10 \ adminurl=http://www.dns-sd.org/ServerStaticSetup.html \ note=At\ Stuart\'s\ house \ Color=T \ Duplex=F \ Scan=F ^C
注意“......行可以通过airprint.dns-sd.org.:631”联系到。这将为您提供所需的主机名。
您现在可以要求托管此AirPrint实例的IP地址(IPv4和IPv6):
dns-sd -Gv4v6 airprint.dns-sd.org. DATE: ---Sat 02 Jul 2016--- 14:19:12.040 ...STARTING... Timestamp A/R Flags if Hostname Address TTL 14:19:12.426 Add 2 0 airprint.dns-sd.org. 50.197.138.101 75 14:19:12.544 Add 2 0 airprint.dns-sd.org. 0000:0000:0000:0000:0000:0000:0000:0000% 77 No Such Record ^C
所以这个AirPrinter确实有一个IPv4( 50.197.138.101 )但没有IPv6地址。
要查找相应的MAC地址,只需使用ARP。