Alright guys, thanks so much! I think I get the firewall idea.
Say for my scenario, there are three existin'' clients in the
chat session (C1, C2 and C3). Now new client C4 comes and join
the chat session, it first connects to the server. This is
possible because the server has opened up specific ports to
listen to all these connection events, so it goes through firewall.
But the C4 cannot send message directly to C1, C2 and C3
because they are behind firewall, and since all "incoming pipes
are bad", firewall rejects the connection originated from C4.
Same applies if either one of C1, C2 and C3 tries to connect to
C4. So this is why P2P will not work!! I got it!
![](http://www.gamedev.net/community/forums/icons/icon10.gif)
OK now here''s another idea to solve this, what if I open up
port number N on all the clients? This way they are able to
communicate with each other right?