After soem more testing, I decided to set the timeout. When I added the timeout, at some point it seemed the timeout was reached and the whole program just aborted. I was in debug mode and the code never hit the next line, it just abruptly ended. Does the .NET vesrion throw a SocketException of some sort on the timeout?