簡體   English   中英

C++中如何從SOME/IP協議中讀取數據

[英]How to read data from SOME/IP protocol in C++

目前我使用 boost udp 套接字讀取了一些數據。 我創建了這樣的套接字

read_socket = new udp::socket(read_socket_service, udp_listener_endpoint);

在哪里

boost::asio::io_service read_socket_service();
udp::endpoint udp_listener_endpoint(some_ip, some_port);

然后我取數據

 read_socket->receive_from(boost::asio::buffer(*buffer), senderEndpoint);

在哪里

udp::endpoint senderEndpoint;
buffer = std::make_unique<std::array<char, 100>>;

如果使用 UDP 解決數據包生成器和數據包接收器之間的通信,則此方法有效。
但是現在我有了使用 SOME/IP 協議進行通信的真實設備。 我在 Wireshark 中看到一些數據包從設備移動到我的應用程序環境,但我完全不知道如何從這些數據包中獲取數據。
當我使用 boost udp 時,它顯示我已建立連接但緩沖區仍為空。
我發現了類似https://github.com/GENIVI/vsomeip 的內容並將其包含在我的項目中,但我真的不知道如何使用它,因為文檔甚至沒有指明如何連接到特定 IP。
或者也許在這種情況下我不應該使用任何 IP 和端口?

一種可能的解決方案是使用libtins 庫
它允許您從網絡流量中提取原始 UDP 數據。
這里有更詳細的教程: libtins嗅探教程
當然,稍后您將不得不從此類包中提取數據。 這可能比讀取數據更復雜,因為所有數據都必須以二進制形式解碼。
這是 Some/IP 文檔: AUTOSAR Some/IP

我希望將來這會給某人一些起點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM