python 2.7.2 windows 7 32 bit
Let me preface this question with I'm fairly new to network programming. I've created a simple server and client using python's builtin SocketServer
SocketServer.ThreadingTCPServer((host, port), Handler)
This works fine when the host is 'localhost' and the client and server are on the same machine. However I want to be able to access the server from across the internet. My computer is behind a router. I'm using pystun(below) to determine my computers public ip address but am unable to connect. I've done a bit of research and it's my understanding that when a program opens a port the router recognizes that and forwards traffic to that computer. This doesn't appear to be happening. I get the same result with my firewall disabled. Do I need to use port forwarding? How are most applications able to communicate from behind a router? I've looked into puncher (source below) and port forwarding via win32com here. I'm looking for someone to point me in the right direction. How do I programmatically have a server open a listening port from behind a router and forward traffic to it?
puncher source: https://coherence.beebits.net/svn/trunk/Puncher/puncher/base.py pystun: http://pypi.python.org/pypi/pystun