【问题标题】:ACE and asynchronous UDP communicationACE 和异步 UDP 通信
【发布时间】:2011-06-08 12:02:15
【问题描述】:

我目前正在研究机器人仿真环境。 可以通过网络连接控制/监控可以与虚拟世界交互的机器人。 对于整个网络通信(当然还有其他东西,例如线程),我们使用 ACE 库。 我现在遇到的问题是,在我看来,异步 UDP 部分已损坏。 运行 ACE 附带的测试程序“test_udp_proactor -h localhost -p 55555”时,我总是会得到错误代码 89(需要目标地址)。 到目前为止,这是我尝试过的,但没有任何帮助:

  • 重新编译更新/不同版本的 ACE
  • 修改test_udp_proactor的代码,重新创建一个类似的程序
  • 改变环境(32 位 CPU 和 Ubuntu 9.10 的不同 PC)

使用同步方法时一切正常,因此网络硬件/软件没有错误。

我搜索了谷歌和这个网站几个小时/几天,似乎没有其他人有这个问题!至少我找不到。

我现在真的很沮丧,因为据我了解,ACE 确实成熟可靠。虽然有些人非常喜欢它的设计。 它用于航空航天界,其中可靠性和实时性是必须的! 我不敢相信 ACE 不支持异步。 UDP 通信和/或没有其他人发现。

有人可以使用 test_udp_proactor 为我运行一个简单的测试来验证这种行为吗? 我们必须使用具有实时功能的系统,所以 windows 不是一个选项...

任何其他提示和/或提示,最好来自 ACE 专家? :-)

非常感谢

【问题讨论】:

  • 好的,我已经搜索了更多,根据开发人员网站 (lse.sourceforge.net/io/aio.html) 的说法,套接字上的 aio 并没有真正实现。我还读到了一些关于 UDP 套接字的实现确实有问题的东西,但是我再也找不到该站点的链接了:-( 我们选择使用线程和阻塞同步方法,因为没有真正的收获(甚至根本没有)现在的 aio。我真的希望将来的某个时候会有更好的支持。

标签: linux ubuntu udp ace


【解决方案1】:

尝试在系统调用级别查看问题。使用 strace 查看哪些系统调用和值被发送到内核,以及这些系统调用返回了哪些错误代码。

您可能会很快找到您的问题。

【讨论】:

  • 感谢您的回复。我真的很想深入了解 aio 库 ;-),遗憾的是我真的没有时间这样做。模拟的其他部分仍然需要实现,这就是为什么我们决定使用线程并在以后处理这个问题。
猜你喜欢
  • 1970-01-01
  • 2017-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-03
  • 2020-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多