Я запускаю сервер, используя сокеты, и хочу, чтобы клиенты могли подключаться к нему.Пересылка портов в python для разрешения соединений сокетов
self.sock.bind(('0.0.0.0',0)) # 0.0.0.0 will allow all connections and port 0 -> os chooses a open port.
stroke_port=self.sock.getsockname()[1]
self.sock.listen(75)
self.open_port_popup(stroke_port)
Теперь для подключения других клиентов у меня есть порт, который пересылает его вручную, и он отлично работает.
Я хочу сделать это автоматическим способом. -> Я стараюсь upnp.
import miniupnpc
def open_port(port_no):
'''this function opens a port using upnp'''
upnp = miniupnpc.UPnP()
upnp.discoverdelay = 10
upnp.discover()
upnp.selectigd()
# addportmapping(external-port, protocol, internal-host, internal-port, description, remote-host)
result=upnp.addportmapping(port_no, 'TCP', upnp.lanaddr, port_no, 'testing', '')
return result
Он открывает порт, показанный на картинке ниже. Но список переадресации портов, показанный на первом изображении, пуст. Он не работает, и клиенты не могут подключиться. Как я могу это исправить? Что мне не хватает?
Можете ли вы подключиться локально? –
@BrianCain Да, используя 127.0.0.1 на одном компьютере. –
Я думаю, что «список переадресации портов на первом изображении» показывает только ручные сопоставления. –