UDP and local network [solved]


I got a network problem.
I use panda to make network. I have a game with a server and a client.
On the server I have a tcp server, and the client can connect easily, because the connexion is bidirectionnal.

Now, I added a udp network exchange. I have a listener on server side, that listen a specific port, and the server writes on another port to send udp stuff to client.
The server runs on a physical machine with an internet IP.

The client runs behind a proxy server, and is on a local network (192.168.0.XXX), because there is several physical machine on the same network. My client send udp stuff to distant server without problem, and the server receives stuff.
Now, server tries to send udp stuff, but stuff never reached client on local network.
I don’t want to define on my proxy a forward rule from this specific ip/port to my local machine, because maybe several players can play from local network, and I never define this kind of rules for AAA games like wow, guild wars and so on.

I tried to catch client IP from the TCP connection, but it gives me the ip of the proxy server, and it doesn’t go to the local machine.

So how, server can send information to the right machine?

Thank you for your time

It seems that for great games, internet provider let opened some port.
For my own purpose, I had to open through my routeur the port I need

I’ve been waiting for a reply on this one, but it seems strange that an online game can only be played when a provider has ‘approved’ or ‘acknowgedged’ the game (and i didnt know/dont think providers can open ports on your router).
Thus there must be a way to do this (without manually opening a port); it should be possible to make the client program tell the router that data comming in through a specific port is ment for him. Have no idea how to do this though…

There are ways to get around this. Look for the terms “hole punching” or “NAT punch-through”. You do need a third-party server to set up the initial connection.

There are third-party libraries for this such as libjingle, which is used by SteamWorks.