I'm attempting to make a simple multiplayer game to learn the concepts of network programming.
Here's what I have so far:
I've got C# server and client apps; both using .Net UDP sockets, working (at least behind my router).
The server binds specifically to port 54000, and the client binds to 55000. For my testing, I run both the server and client on the same machine.
I port-forwarded 54000 in my router, and the client can send an init and input msgs to the server using my router's external ip address. The server sends update messages to the clients' ip:port combo he saw from the init message (also my external IP in this case, but not LAN ip) on 55000 and everything works (client sends input, server moves a quad around, server sends updates, client receives new quad position msg ).
If 54000 is not forwarded, the server does not not receive any messages from the client (this is my sanity check that the messages are not just being looped back to localhost or something). However, 55000 is not forwarded in my router, and the client still receives update messages from the server (this seems strange to me).
I instructed a friend to port-forward 55000 of his router to his machine( so the client can recv messages from the server) and run the client. My server does not appear to receive messages from him.
I know if I wanted to avoid all the port-forwarding, I would have to use NAT traversal strategies, but I thought my current environment (including port forwarding) should work for users on a different LAN for now.
tl;dr - With 'proper' ( to my knowledge ) port-forwarding of client port, why wouldn't a user on another LAN be able to reach my server (behind a LAN, but properly port-forwarded again ) ?
Edited by No Style Guy, 09 May 2014 - 06:38 AM.