测试工具
- wireshark,可用将抓包工具的包拖入wireshak查看数据解析;
- 利用 ANDi 模拟发送 SOME/IP & SOME/IP-SD 包
Vsomeip-SD
SD通讯包含3类报文:Find Service、Offer Service和Subscribe报文,报文介绍:
SD要点介绍
SOME/IP-SD也是基于SOME/IP的报文,用来实现服务发现和事件订阅机制。SOME/IP-SD消息通过UDP进行传输
特定的服务方法[0xFFFF 8100]
client如何发现服务
- 当网络中未收到相关服务的OfferService或者暂时未收到,而Client又需要访问该服务,那Client可以发出FindService去主动寻找服务
- 如果Service已经就绪的话,会回复OfferService报文;服务就绪后,主动发出OfferService,用以告知组播内其他节点,该服务已经启动,可以创建连接
服务不可用,如何通知client
- 当服务不可用时,会主动发送StopOfferService报文,用以告知组播内其他节点,该服务目前不可用,停止发送请求,并取消订阅。
client如何订阅服务
- 当Client收到服务OfferService之后,Client可以发送Subscribe报文主动跟Service订阅感兴趣的事件组;
- 当Client订阅某个事件组之后,后续发现不再需要改事件组的数据了,可以通过StopSubscribe报文来通知Service,避免不必要的数据交互;
- 当Service收到Client的Subscribe报文之后,需要先行判断是否符合可订阅的条件,如果该Client满足事件组订阅条件,则返回SubscribeAck,告知Client订阅成功,当事件组内的事件准备就绪之后,Service会以某种约定好的形式发送相关事件给成功订阅的Client,如果该Client不符合事件组订阅条件,那Service就会直接回复SubscribeEventgroupNack,告知订阅失败。
-client如何订阅事件
依赖哪些库
boost:system thread filesystem
systemd:
网友评论