Thanks for the information, yes I agree that for card game we can use TCP without any problem.

But one thing that concern me, for general online game, is problem with NAT router/firewall.

Player behind NAT router is not easy to "create game" (hosting online game). Traditionally, this needs to setup port forwarding in the NAT router, to redirect incomming packet to the local ip address of the hosted game.

I read several articles about a solution for this particular problem:

http://www.mindcontrol.org/~hplus/nat-punch.html
http://midcom-p2p.sourceforge.net

Basically it uses a third server, "INTRODUCER" to help.

I quite understood the concept, but I cant get my experiment work:

I tried to host a UDP server behind a NAT router.

(1) I put a UDP SERVER_1 on Port 5000 on local IP address 10.0.0.1

(2) A NAT_Router act as gateway, IP address 100.0.0.1 (public ip)

(3) UDP SERVER_2 on Port 5000, IP address 100.0.0.2 (public ip). This is the INTRODUCER service.

(4) UDP SERVER_3 on Port 5000, IP address 100.0.0.3 (public ip).

....

SERVER_1 sent data to SERVER_2.
SERVER_2 will get the IP address of the NAT_Router.

Using this information, why SERVER_3 can not send any data SERVER_1 ? Because I assumed, after SERVER_1 sent data to SERVER_2, the NAT_Router will create a translation table that will redirect incoming connection on port 5000 to SERVER_1

Anyone has implemented this using Delphi ?

Thanks.