ACE 和异步 UDP 通信
我目前正在研究机器人模拟环境。 可以通过网络连接控制/监视可以与虚拟世界交互的机器人。 对于整个网络通信(当然还有其他事物,例如线程),我们使用 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 专家的? :-)
非常感谢
I am currently working on a robotics simulation environment.
Robots, that can interact with he virtual wold can be controlled/monitored via a network connection.
For the whole network communication (and of course other things e.g. Threads) we use the ACE library.
The problem I have now is that it seems to me that the asynchronous UDP part is broken.
When running the test program "test_udp_proactor -h localhost -p 55555" that comes with ACE I will always get the errorcode 89 (Destination address required).
So far this is what I tried, but nothing helped:
- recompiling newer/different versions of ACE
- modifying the code of test_udp_proactor, recreating a similar program
- changing the environment (different PC with 32bit CPU and Ubuntu 9.10)
When using synchronous methods everything works just fine, so there is no error with the network hardware/software.
I searched google and this site for hours/days now and it seems that nobody else has this problem! At least I can't find it.
I am really frustrated now, because as far as I understand it, ACE is really mature and reliable. Though some people are very fond of the design of it.
It is used in the aerospace community, where reliability and Real-Time aspects are a must!
I can't believe ACE doesn't support asynch. UDP communication and/or nobody else found that out.
Can somebody run a simple test for me with test_udp_proactor to verify this behavior?
We have to use a real-time capable system, so windows is not an option...
Any other hints and/or tips, preferably from the ACE-gurus ? :-)
Thank you very much
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试在系统调用级别查看问题。使用 strace 查看哪些系统调用和值正在发送到内核,以及这些系统调用返回哪些错误代码。
您可能很快就会发现您的问题。
Try looking at the problem at a system call level. Use strace to see what system calls and values are being sent to the kernel and what error codes those system calls are returning.
You may find your problem quickly.