KDE Connect iOS 开发日记(2) 识别协议

在上一篇文章中,KDE Connect iOS 的构建已修复,可以将应用程序安装到设备或模拟器中。要与其他设备连接,我们需要与它们配对。但是,在此之前,设备需要使用 KDE Connect 识别机制相互发现。识别过程初始身份验证过程非常简单,如下所示:1.首先,设备 A 将发送一个 UDP 广播数据包,其中包含其身份数据包;2.每个接收到 UDP 广播的设备 B 都会尝试提取数据包中的...
摘要由CSDN通过智能技术生成

在上一篇文章中,KDE Connect iOS 的构建已修复,可以将应用程序安装到设备或模拟器中。

要与其他设备连接,我们需要与它们配对。但是,在此之前,设备需要使用 KDE Connect 识别机制相互发现。

识别过程

初始身份验证过程非常简单,如下所示:

KDEConnectIdentityWithoutSSL.png

1.首先,设备 A 将发送一个 UDP 广播数据包,其中包含其身份数据包;
2.每个接收到 UDP 广播的设备 B 都会尝试提取数据包中的 TCP 端口信息,并尝试通过该端口与设备连接;
3.通过 TCP 连接,每个设备 B 都会向设备 A 发送自己的标识数据包;
4.然后,设备会将链接项添加到发现的设备列表中,并等待用户的操作。

升级识别网络包

第一次尝试,除了 iOS 设备,我所有的设备都可以找到彼此。

在调试模式下,我看到发现消息和相关的输出:

"Inoki" uses an old protocol version, this won't work

因此,我使用 Wireshark 捕获数据包,以了解为什么 KDE Connect iOS 中的旧实现无法正常工作。

区别在于数据包内容和定制数据。

识别网络包内容

所有的网络包都是通过序列化 NetWorkPackage 类来实现的,这个类在 lib/NetworkPackage.hlib/NetworkPackage.m 文件中被定义。

类中包含的属性有:

@property(nonatomic) NSString* _Id;
@property(nonatomic) NSString *_Type;
@property(nonatomic) NSMutableDictionary *_Body;
@property(nonatomic) NSData *_Payload;
@property(nonatomic) NSDictionary *_PayloadTransferInfo;
@property(nonatomic)long _PayloadSize;

序列化之后,内容将是 JSON 格式的字符串。例如,来自 KDE Connect iOS 的数据包内容为:

{
   
    "id":"1587284674",
    "type":"kdeconnect.identity"<
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值