J'essaie de créer un proxy transparent en python en utilisant le module socket. mais pour une raison quelconque, il se bloque sur connect() ing la socket. voici le code que j'utilise:Le socket python se bloque lors de la connexion
from __future__ import division
import socket
import struct
#import mcpackets
import sys
import time
#CUSTOM SETTINGS
HOST="192.168.178.28"
PORT=25565
#END CUSTOM SETTINGS
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(('',25565))
serversocket.listen(1)
print "waiting for client, press multiplayer and use 'localhost' as server"
clientsocket,address=serversocket.accept()
print "client connected from %s:%d"%address
serversocket.close()
print "connecting to '%s:%d'"%(HOST,PORT)
serversocket=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print "socket created."
serversocket.connect((HOST,PORT))#------------------------------ freezes here
print "socket connected."
serversocket.settimeout(0)
clientsocket.settimeout(0)
print "timeouts set."
print "now proxying."
#tdata=[]
try:
while(True):
dat=None
try:
dat=clientsocket.recv(4096)
except socket.timeout:
pass
if(dat!=None):
try:
serversocket.send(dat)
except socket.timeout:
pass
#vice versa
dat=None
try:
dat=serversocket.recv(4096)
except socket.timeout:
pass
if(dat!=None):
try:
clientsocket.send(dat)
except socket.timeout:
pass
except:
clientsocket.close()
#with open("data.log","w") as fid:
# fid.write(''.join(tdata))
raise
le problème ne réside pas dans le réseau car la connexion au serveur fonctionne directement. des idées sur ce qui ne va pas?
Ceci s'applique à 'bind()'. L'auteur dit qu'il se fige sur 'connect()'. Cela signifie probablement que 'connect()' est suspendu en train de résoudre l'adresse IP ou que le serveur ne répond pas avec 'SYN + ACK'. –
qui devrait donner une adresse déjà utilisée exception exception. – doxin