Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法增加iOS上的MTU大小?_Ios_Xamarin_Mtu - Fatal编程技术网

有没有办法增加iOS上的MTU大小?

有没有办法增加iOS上的MTU大小?,ios,xamarin,mtu,Ios,Xamarin,Mtu,在谷歌上做了大量的调查,但没有任何积极的结果后,我在这里发布了一个问题 我想知道是否有办法与BLE外设协商MTU大小 我正在我的应用程序中使用Plugin.BLE软件包来连接蓝牙。其他设备都可以正常工作,但是,通过与iOS设备配对,MTU大小默认为20,无法设置 这是我请求MTU时代码的样子: await Run(async () => mtu = await device.RequestMtuAsync(512)); Msg.Log(this, $"mtu is {mtu}");

在谷歌上做了大量的调查,但没有任何积极的结果后,我在这里发布了一个问题

我想知道是否有办法与BLE外设协商MTU大小

我正在我的应用程序中使用
Plugin.BLE
软件包来连接蓝牙。其他设备都可以正常工作,但是,通过与iOS设备配对,MTU大小默认为20,无法设置

这是我请求MTU时代码的样子:

 await Run(async () => mtu = await device.RequestMtuAsync(512));
 Msg.Log(this, $"mtu is {mtu}");

你们有什么解决方案让应用程序在iOS上协商MTU大小吗?

建立连接时,蓝牙LE连接参数在对等方(中央和外围设备)之间协商。iOS端没有API访问此进程,但可以在另一端进行更改。默认情况下,您可以获得向后兼容的BLE 4.0参数(MTU=23,Datalength=27)。如果外设至少为4.2,它可以协商并获得更好的值。
我刚刚用我的iPad Pro(2018/iOS 13.5)进行了测试,我可以得到MTU 247数据长度251

底线:在开始交换数据之前,在外围设备上进行此操作


(我们在Nordic nRF52840芯片上执行此操作,因此,如果这适用于您,请查看Nordic API以了解如何执行此操作)

您无法更改MTU。它依赖于硬件。较新的设备具有更大的MTU。如果你使用BLE发送数据流,那么你需要处理碎片和重新组装,或者使用L2CAP流。苹果应该自动协商MTU为185或更大。您没有看到它发送Exchange MTU请求吗?连接参数(连接间隔、从属延迟、超时)与MTU无关。蓝牙版本也不会以任何方式影响MTU(所有版本最多支持65535字节)。iOS通常在每个连接开始时使用某些特定于OS的值启动MTU协商。LE数据长度扩展是一个单独的东西,它优化了链接层,但不影响MTU。