I'm currently learning C# coming from a java background. To get my feet wet I decided to make a simple SMTP mail application. And I learned very quickly that C# offers support for both Synchronous and Asynchronous sockets.
From what I can see, there is no real advantage to using a synchronous socket vs an asynchronous since the latter doesn't block and therefor doesn't require you to create a new thread each time. There also doesn't seem to be a noticeable overhead to using one or the other.
So my question is this, is there an advantage to using a synchronous socket or is it better to just stick with asynchronous in most cases?