使用vsomeip三方库实现了基于someip协议的双机通信 @TOC
根据someip抓包信息分析,复现出当时的通信流程中的subscribe/notify部分
注:客户端与服务端需分别部署在ipv4不同的设备上
拉取项目后总体结构如下: vsomeip_sub/notify
├─client------------------------------------>客户端文件
│ ├─CMakeLists.txt ------------------->编译文件
│ ├─sample-ids.hpp ------------------>设置服务实例事件id头文件
│ ├─subscribe-sample.cpp --------->客户端代码
│ └─vsomeip-subscribe.json ------->客户端配置文件
├─server----------------------------------->服务端文件
│ ├─CMakeLists.txt ------------------->编译文件
│ ├─sample-ids.hpp ------------------>设置服务实例事件id头文件
│ ├─notify-sample.cpp --------------->服务端代码
│ └─vsomeip-local.json -------------->服务端配置文件
├─coldon_allpass_ok_ivi.pcap ------> 待复现抓包信息
├─result.pcap ----------------------------> 复现抓包结果
└─README.md-------------------------->说明文档
系统:Linux、Ubuntu 库:vsomeip、c++std标准库
将地址改为新客户端的ipv4地址:
"unicast" : "192.168.254.129"
将地址改为新服务端的ipv4地址:
"unicast" : "192.168.254.128"
cd 进入代码所在路径; 创建文件夹build并进入,使用cmake编译代码;
mkdir build
cd build
cmake -DENABLE_SIGNAL_HANDLING=1 ..
make
编译完成后使用各自的配置文件运行:
VSOMEIP_CONFIGURATION=../vsomeip-subscribe.json \
VSOMEIP_APPLICATION_NAME=subscribe-sample \
./subscribe-sample
VSOMEIP_CONFIGURATION=../vsomeip-local.json \
VSOMEIP_APPLICATION_NAME=notify-sample \
./notify-sample
使用wireshark抓包: 因为测试使用的是两个不同的虚拟机进行通信,故对VMware Network Adapter VMnet8进行抓包 结果详见: result.pcap