I have written an async UDP client to talk to a server at my company. When I run on my developer machine all is well. When I deploy to another machine I get a socket exception
It's likely that the reason that it doesn't fail on your dev box is that the underlying behaviour of the I/O system was changed in Vista so that overlapped I/O that was issued by a thread is no longer cancelled when the thread exits.
See this posting on my blog about this: http://www.lenholgate.com/blog/2008/02/major-vista-overlapped-io-change.html
Now, why you're getting the problem on XP is the real question and to answer that we'd probably need to know a little more about how you're issuing your overlapped I/O requests and from where. Are you running any threads of your own? Do they issue any I/O requests?