c++ - VSOMEIP - 2 个设备之间的通信 (TCP/UDP) 不工作

标签 c++ ubuntu tcp udp automotive

遵循 VSOMEIP 教程 Vsomeip in 10 minutes一切正常到 Communication between 2 devices .

当前设置:

  • Ubuntu 16.04(两台机器 - 服务器和客户端)
  • 两台机器通过以太网连接

使用的文件:

  • 服务器.cpp
  • 客户端.cpp
  • client_config.json
  • server_config.json

服务器输出

[info] Parsed vsomeip configuration in 1ms
[info] Using configuration file: "../clie_prop.json".
[info] Default configuration module loaded.
[info] Initializing vsomeip application "Hello".
[info] SOME/IP client identifier configured. Using 0033 (was: 1313)
[info] Instantiating routing manager [Proxy].
[info] Client [33] is connecting to [0] at /tmp/vsomeip-0
[info] Listening at /tmp/vsomeip-33
[info] Application(Hello, 33) is initialized (11, 100).
[info] Starting vsomeip application "Hello" using 2 threads
[warning] local_client_endpoint::connect: Couldn't connect to: /tmp/vsomeip-0 (Connection refused / 111)
[info] io thread id from application: 0033 (Hello) is: 7f80f5cd88c0 TID: 1497
[info] routing_manager_proxy::on_disconnect: Client 0x33 calling host_->on_state with DEREGISTERED
[info] io thread id from application: 0033 (Hello) is: 7f80f15e7700 TID: 1501
[info] shutdown thread id from application: 0033 (Hello) is: 7f80f1de8700 TID: 1500
[info] main dispatch thread id from application: 0033 (Hello) is: 7f80f25e9700 TID: 1499
[warning] local_client_endpoint::connect: Couldn't connect to: /tmp/vsomeip-0 (Connection refused / 111)
[info] routing_manager_proxy::on_disconnect: Client 0x33 calling host_->on_state with DEREGISTERED
[warning] local_client_endpoint::connect: Couldn't connect to: /tmp/vsomeip-0 (Connection refused / 111)
[info] routing_manager_proxy::on_disconnect: Client 0x33 calling host_->on_state with DEREGISTERED
[warning] local_client_endpoint::connect: Couldn't connect to: /tmp/vsomeip-0 (Connection refused / 111)
[info] routing_manager_proxy::on_disconnect: Client 0x33 calling host_->on_state with DEREGISTERED
[warning] local_client_endpoint::connect: Couldn't connect to: /tmp/vsomeip-0 (Connection refused / 111)
[info] routing_manager_proxy::on_disconnect: Client 0x33 calling host_->on_state with DEREGISTERED
[warning] local_client_endpoint::connect: Couldn't connect to: /tmp/vsomeip-0 (Connection refused / 111)
[info] routing_manager_proxy::on_disconnect: Client 0x33 calling host_->on_state with DEREGISTERED

客户端输出

[info] Parsed vsomeip configuration in 0ms
[info] Using configuration file: "../serv_prop.json".
[info] Default configuration module loaded.
[info] Initializing vsomeip application "World".
[warning] Routing Manager seems to be inactive. Taking over...
[info] SOME/IP client identifier configured. Using 1212 (was: 1212)
[info] Instantiating routing manager [Host].
[info] init_routing_endpoint Routing endpoint at /tmp/vsomeip-0
[info] Client [1212] is connecting to [0] at /tmp/vsomeip-0
[info] Service Discovery enabled. Trying to load module.
[info] Service Discovery module loaded.
[info] Application(World, 1212) is initialized (11, 100).
[info] OFFER(1212): [1234.5678:0.0]
[info] Starting vsomeip application "World" using 2 threads
[info] Watchdog is disabled!
[info] io thread id from application: 1212 (World) is: 7fa68723d8c0 TID: 5370
[info] Network interface "enp0s3" state changed: up
[info] vSomeIP 2.10.21 | (default)
[info] Sent READY to systemd watchdog
[info] io thread id from application: 1212 (World) is: 7fa6828f3700 TID: 5374
[info] shutdown thread id from application: 1212 (World) is: 7fa6838f5700 TID: 5372
[info] main dispatch thread id from application: 1212 (World) is: 7fa6840f6700 TID: 5371
[warning] Releasing client identifier 0003. Its corresponding application went offline while no routing manager was running.
[info] Application/Client 0003 is deregistering.

所有使用的代码与Request/Response中使用的代码相同在 vsomeip 教程中。 配置文件communication between 2 devices中指定的配置文件相同部分更改了 IP 地址以匹配我的机器地址

任何帮助将不胜感激,谢谢。

最佳答案

我找到了解决办法!!

如果您导航到 vsomeip 或 vsomeip-master 目录中的 /build/examples 文件夹,您将找到可执行文件(response-sample、subscribe-sample 等) .).如果您以这样的方式运行它们,使它们使用与 vsomeip 在 10 分钟内使用的相同配置文件(更改单播地址等),它应该可以完美运行。 这是我使用的配置文件。

{
    "unicast" : "192.168.43.6",
    "logging" :
    {
        "level" : "debug",
        "console" : "true",
        "file" : { "enable" : "false", "path" : "/tmp/vsomeip.log" },
        "dlt" : "false"
    },
    "applications" :
    [
        {
            "name" : "World",
            "id" : "0x1212"
        }
    ],
    "services" :
    [
        {
            "service" : "0x1234",
            "instance" : "0x5678",
            "unreliable" : "30509"
        }
    ],
    "routing" : "World",
    "service-discovery" :
    {
        "enable" : "true",
        "multicast" : "224.224.224.245",
        "port" : "30490",
        "protocol" : "udp",
        "initial_delay_min" : "10",
        "initial_delay_max" : "100",
        "repetitions_base_delay" : "200",
        "repetitions_max" : "3",
        "ttl" : "3",
        "cyclic_offer_delay" : "2000",
        "request_response_delay" : "1500"
    }
}

我使用 shell 脚本来执行此操作。

#!/bin/bash
route add -host 224.224.224.245 dev <interface>
export VSOMEIP_CONFIGURATION=<config_file>
export VSOMEIP_APPLICATION_NAME=<application_name>
./<executable>

无论如何它对我有用!希望这可以帮助! :)

关于c++ - VSOMEIP - 2 个设备之间的通信 (TCP/UDP) 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53105172/

相关文章:

php - 在 Ubuntu 上将 Google OAuth 与 PHP 集成时需要 CURL PHP 扩展时出错

ubuntu - 处理不会在 Ubuntu 16.04 上运行引发异常

c# Tcp 和套接字之间的区别?

c - 为什么服务器在关闭客户端连接时进入无限循环

c++ - 需要有关 Visual C++ 中面向对象程序的帮助

android - 创建一个 C++ 类并在另一个包含 ndk android 中的 JNI 方法的 C++ 类中使用该类

c++ - 为什么不扩展可变参数模板参数包?

c++ - 如何随着时间的推移在OpenGL中平移和旋转三角形?

mysql - 在 Ubuntu 12.04 上为 MySQL 配置 hibernate.cfg.xml

c# - TCP Socket.Connect 正在生成误报