我有一个节点 webkit 应用程序,它使用 mdns 模块从 Mac(使用 Mavericks)发布 Bonjour 服务。当我运行服务器代码时node server.js一切正常,但是当运行使用相同服务器代码的节点 webkit 应用程序时,我收到此错误:
"Uncaught Error: dlopen(/Users/me/myfolder/node_modules/mdns/build/Release/dns_sd_bindings.node, 1): no suitable image found. Did find:
/Users/me/myfolder/node_modules/mdns/build/Release/dns_sd_bindings.node: mach-o, but wrong architecture", source: /Users/me/myfolder/node_modules/mdns/lib/dns_sd.js (35)
Run Code Online (Sandbox Code Playgroud)
显然,当您安装该mdns模块时npm,它是为 x86 架构构建的,而我需要它用于 i386,因为 node-webkit 是为 i386 构建的(我通过阅读此线程发现了这一点: http: //forums.macrumors.com/showthread .php?t=879780 )。您可以通过在终端中运行以下命令来验证它:
$ lipo -info /Applications/node-webkit.app/Contents/MacOS/node-webkit
Non-fat file: /Applications/node-webkit.app/Contents/MacOS/node-webkit is architecture: i386
Run Code Online (Sandbox Code Playgroud)
我发现这个链接建议了一个解决方案:https://github.com/rogerwang/node-webkit/issues/296对于另一个模块(节点代理)。建议的说明是:
I managed to build a 32-bit version of node-proxy as follows:
I installed nw-gyp
I ran nw-gyp configure --target=0.3.6 …Run Code Online (Sandbox Code Playgroud) 我想绑定到 mac os x 计算机上的多播 DNS 组和端口,以构建一些 bonjour 功能的原型。但是,当我尝试绑定到端口时,出现以下错误(顺便说一句,这是从 python 运行的):
socket.error: [Errno 48] Address already in use
Run Code Online (Sandbox Code Playgroud)
看起来 mDNSResponder 绑定到地址:未设置 SO_REUSEADDR 的端口。
是否可以以允许其他代理绑定到地址:端口组合的方式运行 mDNSResponder?
我正在使用 jmdns 通过 mdns 广播服务,然后该服务在 kubernetes pod 内作为 docker 映像运行。pod yaml 看起来像这样:
apiVersion: v1
kind: Pod
metadata:
name: mdns-broadcaster
spec:
hostNetwork: true
containers:
- name: mdns-broadcasting-pod
image: ...
Run Code Online (Sandbox Code Playgroud)
该应用程序将启动并广播某些服务类型_example._tcp。但是,从托管此 Pod 的单个节点运行 avahi-browse,我看不到正在广播的此类服务。
任何帮助将不胜感激,谢谢
我已经尝试了很长时间,让NsdManager发现功能在Android 9上运行。它可以在此之前的任何Android版本上正常运行。
为了进行测试,我使用了这个简单的代码段,清单中有“ INTERNET”的权限。
var nsdManager = context.getSystemService(Context.NSD_SERVICE) as NsdManager
nsdManager.discoverServices("_https._tcp", NsdManager.PROTOCOL_DNS_SD, object: NsdManager.DiscoveryListener {
override fun onDiscoveryStarted(serviceType: String?) {
println("DEBUG: onDiscoveryStarted $serviceType")
}
override fun onDiscoveryStopped(serviceType: String?) {
println("DEBUG: onDiscoveryStopped $serviceType")
}
override fun onServiceFound(serviceInfo: NsdServiceInfo?) {
println("DEBUG: onServiceFound $serviceInfo")
}
override fun onServiceLost(serviceInfo: NsdServiceInfo?) {
println("DEBUG: onServiceLost $serviceInfo")
}
override fun onStartDiscoveryFailed(serviceType: String?, errorCode: Int) {
println("DEBUG: onStartDiscoveryFailed $serviceType $errorCode")
}
override fun onStopDiscoveryFailed(serviceType: String?, errorCode: Int) {
println("DEBUG: onStopDiscoveryFailed $serviceType $errorCode")
}
})
Run Code Online (Sandbox Code Playgroud)
当执行此代码时,我在日志中看不到任何调试或错误消息。
使用Wireshark,我可以看到广播的mDNS Standard查询“ _https._tcp.local”以及来自所有预期设备的所有相应响应。由于从未调用过函数“ …
mdns ×4
bonjour ×2
android ×1
docker ×1
gyp ×1
jmdns ×1
kubernetes ×1
macos ×1
multicast ×1
node-webkit ×1
node.js ×1
nsdmanager ×1
python ×1
sockets ×1