2011-01-13 71 views
1

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

  • 重新编译新的/不同版本的ACE
  • 修改test_udp_proactor的代码,再造一个类似的计划
  • 改变环境(不同PC与32位CPU和Ubuntu 9.10)

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

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

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

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

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

非常感谢您

+0

好的我一直在寻找更多,根据开发人员网站(http://lse.sourceforge.net/io/aio.html)插座上的aio没有真正实现。我还读到了关于实现的一些问题,当涉及UDP套接字时,但我找不到链接: - (我们选择使用线程和阻塞同步方法,因为没有真正的增益(或者根本没有),我真的希望未来能有更好的支持 – siddian 2011-01-14 16:26:16

回答

0

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

您可能会很快发现您的问题。

+0

感谢您的回复 我真的很想深入到aio库的深处; ),可惜我没有时间这样做。仿真的其他部分仍然需要实现,这就是为什么我们决定使用线程并在稍后的时间点处理这个问题的原因。 – siddian 2011-01-14 16:30:35