I need to connect to computer over tcp/ip i have the external ip but without port forwarding I can't connect to the server . Is there any way to configure the server to accepts connection on the external ip and port define by the server without configuring the router ? (how does emule does it ? or other peer to peer application )
views:
283answers:
4You need to clarify the situation. Is the target computer behind a router that does NAT?
If that is the case, the answer is no.
The server cannot accept connections on the external IP, because the external IP is the IP of the router, and the server can only accept connections that the router forwards to it, as there is no direct path to the server.
There are however some ways to circumvent problems like this caused by NAT. They usually involve the computer behind the NAT making an outbound connection, which is then used for communication. See e.g.
http://en.wikipedia.org/wiki/Hole_punching
Universal Plug and Play, as cited in the other answer, also may allow this.
Basically you need a program on this computer which will initiate the connection. This is how programs like FogCreek CoPilot, LogMeIn, etc allow remote administration of machines behind NAT routers without configuring the router.
Ideally you want to have the NATed client intiate the connection but if that's not possible you'll want to look into STUN or UPnP
STUN is a collection of tools and protocols which allows you to punch holes through NAT. It may require the cooperation of an un-NATed server. This might fail depending on the NAT implementation
UPnP is a protocol towards the NAT router which can allow the client to dynamically forward the required ports. Not all NAT routers will support this, though most modern ones probably will.