I extracted this post from NotAGoodName from the depths of the never-read multiplayer section of this forum. It looks to me like he has identified the real source of the "contacting peer" hangup that makes getting into a multiplayer game over gamespy such a chore. Hopefully the firaxians will see it here as opposed to the never-viewed multiplayer section, since this is the single biggest technical problem with playing Civ4 on line:
Originally posted by Notagoodname
Yeah i actually am behind a NAT router and civ4 multiplayer just doesn't work for me.
I fired up the old packet sniffer to see what was wrong.
Upon connecting to a host the host sends out to the connecting player the ip addresses that all the peers in the game initially sent the host. Peers behind NAT send their local ip addresses to the host (obviously wrong) and the host then tells other peers to connect via these incorrect addresses.
Now if you Firaxis guys are reading this use the recvfrom() function, get the clients ip via that and set that as the ip for other peers to connect to, don't just get the local ip from each peer.
Yeah i actually am behind a NAT router and civ4 multiplayer just doesn't work for me.
I fired up the old packet sniffer to see what was wrong.
Upon connecting to a host the host sends out to the connecting player the ip addresses that all the peers in the game initially sent the host. Peers behind NAT send their local ip addresses to the host (obviously wrong) and the host then tells other peers to connect via these incorrect addresses.
Now if you Firaxis guys are reading this use the recvfrom() function, get the clients ip via that and set that as the ip for other peers to connect to, don't just get the local ip from each peer.