I have two PCs: a desktop and a laptop. Both are running Windows 7. I've written a very basic class library that contains two classes designed around sending and receiving a simple string across the Interwebs. Now, the code within these classes isn't the problem. I know this because I've tested it and it works perfectly. Well, half perfectly.
I copied the library onto both my desktop and laptop and built a very simple console program on both ends for testing. When I set up my desktop as the server and my laptop as the client, the program ran perfectly. I will say this though. When I ran the program for the first time, Windows notified me about VSHOST.EXE and asked me if I wanted to allow it, which I did. Now, when I switched it, running the exact same programs but on opposite computers, my desktop (the client) couldn't form a connection, eventually giving me an 'Error 10060'. Curiously enough, when I ran the server program on my laptop for the first time, Windows didn't ask if I wanted to allow VSHOST.EXE.
Is Windows security preventing incoming connections? And, if it is, how can I ensure that any of my distributed applications won't suffer from this same problem? I plan on having each client also be a listener to listen for random updates (unless there is a better way to do this).
A little more info: The important Listener code
private TcpListener Listener;
Listener = new TcpLIstener(IPAddress.Any, 4040);
TcpClient Client = Listener.AcceptTcpClient(); <-Pretty sure the listener isn't making it past this point
Important Client code
public string IP; //pass an IP Address or hostname to this
TcpClient Client = new TcpClient();
IPostEntry Host = Dns.GetHostEntry(IP);
var Address = (from h in Host.AddressList
where h.AddressFamily == AddressFamily.InterNetwork
Well "Listener.AcceptTcpClient(); <-Pretty sure the listener isn't making it past this point" does block until a connection request is received.
Your sending/receiving code also looks fine
It looks like a firewall is just blocking the connection, just look at firewall settings, i don't think you really can make sure your program will work though a firewall, especially if its listening for a connection, after all that's what they are designed for right?