【发布时间】:2021-01-10 23:08:37
【问题描述】:
目前我使用 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 和端口?
【问题讨论】:
-
你的问题是什么?
-
问题在标题中:如何在 C++ 中从 SOME/IP 协议中读取数据。我将不胜感激任何可以提供帮助的建议——不仅仅是纯代码。链接到教程,任何东西。
-
这个问题太笼统了,答案是:找个库或者自己实现协议。
-
好的。然后我会缩小范围:您知道在这种情况下可以使用的任何库吗?我想避免执行此协议。
-
关于库的问题在 Stack Overflow 上是题外话。
标签: c++ sockets udp ip autosar