为啥有响应与无响应的 MTU 不同?

Posted

技术标签:

【中文标题】为啥有响应与无响应的 MTU 不同?【英文标题】:Why is the MTU different for With Response vs Without Response?为什么有响应与无响应的 MTU 不同? 【发布时间】:2020-08-24 20:57:32 【问题描述】:

ios 上,当我请求 MTU 时,.withoutResponse.withResponse 的值不同。我意识到它可能会有所不同,因为函数需要该参数,但为什么会有所不同?

这是在设备上(BLE 4.2):

(lldb) po peripheral.maximumWriteValueLength(for: .withoutResponse)
182

(lldb) po peripheral.maximumWriteValueLength(for: .withResponse)
512

在另一台设备 (BLE 5) 上,我得到:

(lldb) po peripheral.maximumWriteValueLength(for: .withoutResponse)
509

(lldb) po peripheral.maximumWriteValueLength(for: .withResponse)
512

【问题讨论】:

【参考方案1】:

无响应写入与 MTU 直接相关。 (MTU - 3)。

当您使用writeWithResponse 时,iOS 可以执行写入响应(最大值长度为 MTU - 3)或“写入长特征值”,它使用多个 ATT 事务来写入值。在后一种情况下,唯一的限制因素是特征值的最大长度,标准设置为 512 字节。

【讨论】:

谢谢!你有我可以阅读更多内容的参考吗? (或 BLE 规范中的部分)具体指定“响应”有何不同。 只需阅读 GATT 章节,例如第 4.9.4 节。

以上是关于为啥有响应与无响应的 MTU 不同?的主要内容,如果未能解决你的问题,请参考以下文章

为啥电脑总是显示这个,软件程序总是无响应

当我的程序“无响应”时,为啥我的paintBox Canvas 被擦除了?

wps为啥老是未响应

为啥在 Jupyter 笔记本中调用 cv2.imshow() 时出现无响应窗口

为啥 XMLHttpRequest 响应的长度与请求文件的大小不同?

用Xmodem传送文件为啥总是出现系统无响应