2012-07-05 15 views
6

mogę to zrobić po prostu gniazda komunikacji na tej samej maszynie, używającCzy istnieją proste opisy dotyczące przekierowania portów za pomocą Pythona?

server:

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() 

klient:

import socket 

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

Jakie zmiany musiałyby być wykonane zostały w tym komunikowania się między moim laptopem i prywatny serwer, nad którym pracuję? Z moich badań wynika, że ​​portowanie jest najlepszym sposobem, ale nie znalazłem żadnych wyjaśnień ani samouczków, jak to zrobić.

dziękuję

+0

'host = socket.socket()' jest prawdopodobnie błąd copy-paste – jfs

+0

nie wiem jak przekierować porty tak Nie jestem pewien, czy tak by się stało wykonalne. Chciałbym wypróbować dowolną metodę w tym momencie. – user1340048

+1

Dlaczego nie możesz po prostu użyć 'host = 'swojego serwera'' w kodzie klienta? – jfs

Odpowiedz

1

jeśli zależy Ci na realizację Python przekierowania portów, jest stary, ale świetny przepis ActriveState który implementuje asynchroniczny serwer przekierowania portów używając tylko standardowej biblioteki Pythona (gniazdo, asyncore). Możesz zaglądać pod numer code.activestate.com.

P.S. Istnieje również link do gwintowanej wersji skryptu.

2

Jeśli naprawdę nie trzeba to zrobić w Pythonie, wystarczy użyć netcat: -

http://netcat.sourceforge.net/

Port Forwarding lub mapowanie portów W systemie Linux Netcat może być używany do przekierowania portów. Poniżej znajduje się dziewięć różnych sposobów, aby zrobić przekierowanie portów w Netcat (-C nie przełącznik obsługiwane chociaż - to praca z „nkat” wcielenie netcata):

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' 

Źródło: - http://en.wikipedia.org/wiki/Netcat#Port_Forwarding_or_Port_Mapping

To zwykle przychodzi jako standardem w większości * nix dystrybucje i nie jest też port Win32: -

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

Powiązane problemy