передача данных между двумя удаленными компьютерами через Интернет (не работает) - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь отправить двоичные данные между двумя компьютерами через Интернет. я использую сокеты tcpip python и включил переадресацию портов в маршрутизаторах. до сих пор я не могу успешно подключить их. пожалуйста, найдите мою ошибку

Я пытался использовать другие протоколы (DCP), но проблема сохраняется

class Server:
    def __init__(self):
        #port forwarding and finding ip
        p.EnablePortForward()
        self.connections=[]
        self.peers=[]
        self.sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        self.sock.bind((p.serverhost,10000))
        self.sock.listen(1)

    def run_server(self):
        print('started')
        while True:
            print('running')
            c,a=self.sock.accept()
            self.peers.append(a)
            cThread=threading.Thread(target=self.handler,args=(c,a))
            cThread.deamon=True
            cThread.start()
            self.connections.append(c)
            print(str(a[0])+':'+str(a[1])+'connected')

    def handler(self,c,a):
        try:
            while True:
                data=c.recv(4096)
                for conn in self.connections:
                    if data:
                        print(data)
                        self.disconnect(c,a)
        except:
            self.disconnect(c,a)

    def disconnect(self,c,a):
        self.connections.remove(c)
        self.peers.remove(a)
        c.close()

class Client:
    def __init__(self,address):
        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        self.sock.connect((address,10000))

    def SendMsg(self,message):
        self.sock.send(message)

    def RecMsg(self):
        data = self.sock.recv(1024)
        print(data)

я установил объект сервера и выполнил Server.runserver () сервер слушает правильно когда я пытаюсь создать клиентский объект с ip сервера, он не может подключиться и выдает ошибку тайм-аута.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...