- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有兴趣通过蓝牙连接到基于 iOS 的设备。我可以看到“本地网络”服务已公开,但我找不到任何关于它的额外信息。存储在 key 0x0204 下的属性看起来像 Bonjour key 。
使用哪个协议(protocol)?如何与使用 Linux、Mac 或自己配备蓝牙芯片的嵌入式设备的 iOS 设备通话?
这是在 iOS 设备运行 Gameloft 的 Star Battalion 时使用 OS X 下的蓝牙资源管理器提取的 SDP 数据。
{
0x0000 = uint32(1330188565),
0x0200 = uint32(2),
0x0202 = string(004wD7l1A..0|0|0|ivucic-À'),
0x030a = uint32(0),
0x0009 = { { uuid16(11 15), uint16(256) } },
0x0201 = string(_657o30a6rmst07À),
0x0005 = { uuid16(10 02) },
0x0100 = string(Local Network),
0x0001 = { uuid16(11 15) },
0x0203 = string(004wd7l1a..0|0|0|ivucic-_657o30a6rmst07À
0xf000 = uint8(2),
0x0204 = string( txtvers=1state=A),
0x0008 = uint8(255),
0x0006 = { uint16(25966), uint16(106), uint16(256), uint16(26226), uint16(106), uint16(272), uint16(25701), uint16(106), uint16(288), uint16(27233), uint16(106), uint16(304) },
0x0004 = { { uuid16(01 00), uint16(15) }, { uuid16(00 0f), uint16(256), { uint16(2048), uint16(2054) } } },
0x0002 = uint32(0)
},
其他部分相关的问题:
进一步研究 Apple 的 OS X 中的蓝牙资源管理器和 GNU/Linux 中的 sdptool
,我发现 key 0x0001
(代表“协议(protocol)类”),包含值0x1115
,代表“PAN”的“PANU”变体 - 点对点变体。值得注意的是,尽管支持创建 0x1116
网络,但 OS X 不为此协议(protocol)提供服务端(“托管”)支持,这是“PAN”的“NAP”变体 -客户端/服务器变体。
这可能是个好消息,但前提是不必使用 GameKit 的 session 协议(protocol)。劫持 GameKit 建立的媒体层连接以发送其他 UDP 流量是理想的。
我仍然需要研究这个 GameKit 连接是否真的是 0x1115
;也就是说,如果它真的是“PANU”。有没有人有任何进一步的信息?
请注意,虽然 Bonjour 在 iOS 3 之后自动宣布了此蓝牙服务,但在 iOS 5 中已发生变化。请参阅我在 how to establish Bluetooth connection without GameKit 上发布的答案。 ,我在其中轻松记录了 Apple 的信息 Technical Q&A QA1753 .
对 GNU/Linux 的少量研究并未导致成功连接。这可能是由于缺乏关于如何正确使用 pand
的知识。也可能是由于基于蓝牙 MAC 的阻塞。我喜欢任何人可能必须提供的信息。如果我进一步研究这个并偶然发现一些有趣的东西,我会更新这个答案。
Ubuntu 下的结果。该服务仅在蓝牙 Bonjour 处于事件状态时出现。
ivucica@ivucica-MacBook:~$ sdptool browse $ADDR #relevant data only
Browsing ADDRESS_HERE ...
Service Name: Local Network
Service RecHandle: 0x4f491115
Service Class ID List:
"PAN User" (0x1115)
Protocol Descriptor List:
"L2CAP" (0x0100)
PSM: 15
"BNEP" (0x000f)
Version: 0x0100
SEQ8: 0 6
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
code_ISO639: 0x6672
encoding: 0x6a
base_offset: 0x110
code_ISO639: 0x6465
encoding: 0x6a
base_offset: 0x120
code_ISO639: 0x6a61
encoding: 0x6a
base_offset: 0x130
Profile Descriptor List:
"PAN User" (0x1115)
Version: 0x0100
... and so on ...
这是连接的尝试:
ivucica@ivucica-MacBook:~$ pand --connect $ADDR -n
pand[3237]: Bluetooth PAN daemon version 4.98
pand[3237]: Connecting to ADDRESS_HERE
pand[3237]: Connect to ADDRESS_HERE failed. Connection refused(111)
是否需要某种授权?启用加密、身份验证、安全连接和强制成为主人似乎没有任何区别(各种组合的-AESM
选项)。
有人有什么想法吗?
嗯!
ivucica@ivucica-MacBook:~$ sudo hcidumpHCI sniffer - Bluetooth packet analyzer ver 2.2device: hci0 snap_len: 1028 filter: 0xffffffff HCI Event: Command Status (0x0f) plen 4 Create Connection (0x01|0x0005) status 0x00 ncmd 1> HCI Event: Role Change (0x12) plen 8 status 0x00 bdaddr ADDRESS_HERE role 0x01 Role: Slave> HCI Event: Connect Complete (0x03) plen 11 status 0x00 handle 12 bdaddr ADDRESS_HERE type ACL encrypt 0x00 HCI Event: Command Status (0x0f) plen 4 Read Remote Supported Features (0x01|0x001b) status 0x00 ncmd 1> HCI Event: Read Remote Supported Features (0x0b) plen 11 status 0x00 handle 12 Features: 0xbf 0xfe 0x8f 0xfe 0x9b 0xff 0x79 0x83 HCI Event: Command Status (0x0f) plen 4 Read Remote Extended Features (0x01|0x001c) status 0x00 ncmd 1> HCI Event: Max Slots Change (0x1b) plen 3 handle 12 slots 5> HCI Event: Read Remote Extended Features (0x23) plen 13 status 0x00 handle 12 page 1 max 1 Features: 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 HCI Event: Command Status (0x0f) plen 4 Remote Name Request (0x01|0x0019) status 0x00 ncmd 1> HCI Event: Remote Name Req Complete (0x07) plen 255 status 0x00 bdaddr ADDRESS_HERE name 'Evil iPad' HCI Event: Command Status (0x0f) plen 4 Authentication Requested (0x01|0x0011) status 0x00 ncmd 1> HCI Event: Link Key Request (0x17) plen 6 bdaddr ADDRESS_HERE HCI Event: Command Complete (0x0e) plen 10 Link Key Request Reply (0x01|0x000b) ncmd 1 status 0x00 bdaddr ADDRESS_HERE> HCI Event: Auth Complete (0x06) plen 3 status 0x00 handle 12 HCI Event: Command Status (0x0f) plen 4 Set Connection Encryption (0x01|0x0013) status 0x00 ncmd 1> HCI Event: Encrypt Change (0x08) plen 4 status 0x00 handle 12 encrypt 0x01 HCI Event: Number of Completed Packets (0x13) plen 5 handle 12 packets 1> ACL data: handle 12 flags 0x02 dlen 16 L2CAP(s): Info rsp: type 2 result 0 Extended feature mask 0x02a8 Enhanced Retransmission mode FCS Option Fixed Channels Unicast Connectless Data Reception HCI Event: Number of Completed Packets (0x13) plen 5 handle 12 packets 1> ACL data: handle 12 flags 0x02 dlen 20 L2CAP(s): Info rsp: type 3 result 0 Fixed channel list 0x00000006 L2CAP Signalling Channel L2CAP Connless HCI Event: Number of Completed Packets (0x13) plen 5 handle 12 packets 1> ACL data: handle 12 flags 0x02 dlen 16 L2CAP(s): Connect rsp: dcid 0x0000 scid 0x0040 result 2 status 0 Connection refused - PSM not supported> HCI Event: Disconn Complete (0x05) plen 4 status 0x00 handle 12 reason 0x13 Reason: Remote User Terminated Connection
这个?
> ACL data: handle 12 flags 0x02 dlen 16 L2CAP(s): Connect rsp: dcid 0x0000 scid 0x0040 result 2 status 0 Connection refused - PSM not supported
最佳答案
根据这个有趣的网站: http://code.google.com/p/btstack/wiki/iPhoneBluetooth除了蓝牙 RF 芯片外,Apple 还使用了一种特殊芯片,该芯片拒绝与没有该芯片的设备建立任何连接 - 这意味着它在硬件级别上处于锁定状态。
关于ios - 在其他平台上使用 iOS GameKit 的 "Bluetooth Bonjour",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8070998/
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我想开发一个可以运行的 Android 应用程序 黑莓剧本。应用程序需要找到其他 本地网络上运行相同应用程序的设备。 我正在考虑实现 Bonjour/Zeroconf/jmDNS 用于查找设备的协议(
通过DNS-SD发现服务后,该主机的地址将如何准确解析,并且花费的时间/开销会大大增加吗? 另外,如果我使用的是JmDNS或Bonjour,则有serviceFound和serviceResolved
我的问题是关于“本地网络上文件服务器服务的自动发现”。 我想实现一个基本上是文件服务器的服务并将其发布在本地网络上。连接到本地网络的客户端 PC 应该自动找到该服务并映射(挂载)网络驱动器,无需用户干
有没有一种简单的方法可以扫描给定网络的Bonjour/Zeroconf服务? 我有一组计算机(Linux,Windows,Apple),并且想自动生成Intranet中所有可用的具有Zeroconf功
谁能解释一下从 iPhone OS 3.0 开始,bonjour 如何通过蓝牙工作? 文档称,即使 Wi-fi 关闭且蓝牙打开,应用程序中使用的 Bonjour API 也能正常工作。它还表示,蓝牙
我正在开发一个 iPhone 应用程序,它允许用户使用 Bonjour 协议(protocol)连接到其他 iPhone。其中一个用户托管服务器并发布他的 bonjour 服务,而其他客户端用户发现他
Bonjour 提供“DNSSSD.browse(serviceType,callBackObject)”方法来浏览特定类型的服务。如果找到给定类型的服务,Bonjour 将调用“callBackOb
Bonjour 是否允许一台 iOS 设备同时向多台 iOS 设备发送数据或图像? I am able to detect number of iOS devices over a wifi netw
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,vis
我正在尝试在 Swift3 中实现 Bonjour NetServiceBrowser,以便在我的网络上发现主机。 当我使用以下命令在终端中手动搜索时,我会找到主机。 dns-sd -B 但是,当我尝
这看起来太基础了,以至于人们会为它大喊大叫,在网络上搜索一无所获,但我已经在多个网络和计算机上对其进行了测试。我们遇到一个问题,我们使用 .local url 访问资源非常慢。如果我们使用直接 IP
我注意到 Pasteboard 是一款适用于 iOS 的剪贴板应用程序,它可以在后台运行 Bonjour 服务。我不知道他们是如何实现的,所以我在互联网上搜索,然后发现它在后台播放无声文件。但现在不是
我知道 iOS 的 Bonjour 实现(NSNetService、NSNetServiceBrowser)在本地网络上开箱即用。 文档说可以设置 Bonjour DNS 服务器以允许通过 Inter
我想写一个可以搜索Bonjour的C程序网络上启用的设备。 基本上我们有一个网络摄像机,它支持 Bonjour 协议(protocol)。我想用 C 编写 API,可以搜索这些启用了 Bonjour
使用jmdns 3.4.1,我可以看到局域网中机器发布的服务,我也可以创建一个服务并注册它,这样我就可以在我的机器上看到它。但是,当我在局域网的另一台机器上新建服务时,在我的机器上是看不到的。我在另一
我正在编写一个可以在电脑和手机上运行的软件。 该服务使用 HTTP API 进行通信,并将使用 Zeroconf 通过本地网络发布。 最初我使用 _http._tcp. 发布了我的服务作为服务类型,但
我想知道是否可以在 iPhone OS 3.0 或更高版本中直接通过蓝牙使用 bonjour,而不使用 GameKit。谁能提供一些例子吗? 最佳答案 只需宣布服务即可,就像 tc. has said
问题说明了一切。 有人可以告诉我这是否可能以及如何实现吗? 我已经有了我想要 bonjour 名称的设备的 IP 地址和 MAC 地址... 最佳答案 假设您正在查找 .local 域中的计算机,并且
我正在尝试调试 Bonjour 网络例程,每次运行它时,Mac 的防火墙都会询问“您希望应用程序 ProjectName 接受传入的网络连接吗?” 我单击“允许”,为其提供管理员名称和密码,然后该应用
我是一名优秀的程序员,十分优秀!