2012-07-05 12 views
6

que puedo hacer simplemente socket de comunicación en la misma máquina usando¿Hay descripciones simples sobre el reenvío de puertos utilizando python?

servidor:

import socket 

s = socket.socket() 
host = socket.socket() 
port = 8000 
s.bind((host,port)) 
s.listen(5) 
while true: 
    c,addr = s.accept() 
    print 'got connection from', addr 
    c.send('thank you for connecting') 
    c.close() 

cliente:

import socket 

s = socket.socket() 
host=socket.gethostname() 
port = 8000 
s.connect((host,port)) 
print s.recv(1024) 

Qué necesitarían cambios a crearse tienen esta comunicación entre mi ordenador portátil y una servidor privado en el que trabajo? Desde mi búsqueda, he pensado que la mejor manera de hacerlo es utilizar puertos, pero no he encontrado explicaciones ni tutoriales sobre cómo hacerlo.

gracias

+0

'host = socket.socket()' es probablemente un error de copiar y pegar – jfs

+0

no sé cómo reenviar los puertos por lo No estoy seguro de si sería factible Yo probaría cualquier método en este punto. – user1340048

+1

¿Por qué no puedes simplemente usar 'host = 'tu servidor'' en el código del cliente? – jfs

Respuesta

1

Si se preocupan por aplicación Python reenvío de puertos, hay un viejo pero gran receta ActriveState que implementa el reenvío de puertos del servidor asíncrono utilizando sólo la biblioteca estándar de Python (zócalo, asyncore). Puede hojear al code.activestate.com.

P.S. También hay un enlace a una versión enhebrada del script.

2

Si usted realmente no necesita hacer esto en Python, sólo tiene que utilizar netcat: -

http://netcat.sourceforge.net/

redireccionamiento de puertos o asignación de puertos En Linux, NetCat se puede utilizar para el reenvío de puertos. A continuación se presentan nueve formas diferentes de hacer el reenvío de puertos en NetCat (-C interruptor no soportados sin embargo - estos trabajos con la encarnación 'NCAT' de netcat):

nc -l -p port1 -c ' nc -l -p port2' 
nc -l -p port1 -c ' nc host2 port2' 
nc -l -p port1 -c ' nc -u -l -p port2' 
nc -l -p port1 -c ' nc -u host2 port2' 
nc host1 port1 -c ' nc host2 port2' 
nc host1 port1 -c ' nc -u -l -p port2' 
nc host1 port1 -c ' nc -u host2 port2' 
nc -u -l -p port1 -c ' nc -u -l -p port2' 
nc -u -l -p port1 -c ' nc -u host2 port2' 

Fuente: - http://en.wikipedia.org/wiki/Netcat#Port_Forwarding_or_Port_Mapping

Por lo general se presenta como estándar en la mayoría * nix distribuciones y también hay un puerto de Win32: -

http://www.stuartaxon.com/2008/05/22/netcat-in-windows/

Cuestiones relacionadas