ASocket - The next step in the Ethernet Library

The work that was put into the 16 release really improved the libraries in terms of reliability. However, I have put together what I hope is the next step in the development process.

Client & Server are great for simple or even complex TCP operations... IF that is the only thing you are trying to do. But, if you are trying to do anything else time sensitive that doesn't fit well into an interrupt, Client & Server will cause some conflict. The reason is there are many blocking function calls in Client & Server that don't return until something either completes or times out. The solution is an Asynchronous socket library. I don't want to change Client & Server, they are good implementations and are in use already. However, I do want to provide an alternative for some of the more complex projects that need asynchronous socket communication.

I have written this library and named it ASocket. With this new libary it not only provides asynchronous operation but also provides UDP support. I have also taken the time to write a DNS library as well that uses ASocket. I have also taken Jordon's DHCP implementation an ported it to use the ASocket library as well. I also took client & server and modified them to use ASocket behind the scenes. The reason for that is to eliminate all duplicate code in the Ethernet libraries.

I have created two new examples, WebClientWithDHCPandDNS and WebClientWithASocket. To install the libraries just replace your Ethernet folder with the one in this zip file.

I am hosting the code at: http://code.google.com/p/kegger/source/browse/#svn/trunk/Ethernet

A direct link to the packaged zip file:

http://kegger.googlecode.com/files/Ethernet.zip

I am asking for some people to give this a try and let me know what you think.

Thanks,

So I understand why UDP is nice to have, because you don't have to wait for replies like you would with TCP, but I am not sure what asynchronous is allowing to happen... Could you maybe put the advantages of async in more laymans terms (examples, etc) as far as why it would be better?