나는 소켓 모듈을 사용하여 파이썬에서 투명한 프록시를 만들려고합니다. 하지만 어떤 이유로 소켓에 connect()를 걸면 멈 춥니 다.python 소켓 연결이 끊어졌습니다
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
문제가 직접적으로 잘 작동 서버에 연결로 네트워크에 거짓말을하지 않습니다 여기 내가 사용하고 코드입니다. 무슨 일이 일어나고 있는지에 대한 아이디어가 있습니까?
이는'bind()'에 적용됩니다. 저자는'connect()'에서 멈추는다고 말한다. 이것은 아마도'connect()'가 IP 주소를 결정하는 걸 멈추고 있거나 서버가'SYN + ACK '로 응답하지 않는다는 것을 의미합니다. –
은 이미 사용중인 주소에 예외를 제공해야합니다. – doxin