1

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

siddian
  • 11
  • 1
  • OK I have been searching a bit more and according to the developer site (http://lse.sourceforge.net/io/aio.html) aio on sockets is not really implemented. I also read something about the implementation being really buggy, when it comes to UDP sockets, but I can't find the link to the site anymore:-( We chose to use threads and a blocking synchronous approach, since there is no real gain (or even none at all) with aio as it is now. I really hope there will be a better support sometime in the future. – siddian Jan 14 '11 at 16:26

1 Answers1

0

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.

Zan Lynx
  • 53,022
  • 10
  • 79
  • 131
  • Thanks for your reply. I would really love to plunge into the depth of the aio library ;-), sadly I don't really have the time to do that. Other parts of the simulation still need to be implemented, that's why we decided to use threads and take care of this at a later point in time. – siddian Jan 14 '11 at 16:30