Uruchamiam serwer przy użyciu gniazd i chcę umożliwić klientom łączenie się z nim.Przekierowanie portów w pythonie, aby umożliwić połączenia z gniazdami
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)
Teraz, dla innych klientów do połączenia Mam port do przodu ręcznie i działa dobrze.
Chcę to zrobić w sposób zautomatyzowany. -> Próbuję 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
Otwiera port pokazany na obrazku poniżej. Ale lista przekazywania portów widoczna na pierwszym obrazie jest pusta. To nie działa, a klienci nie mogą się połączyć. Jak mogę to naprawić? czego mi brakuje?
Czy możesz połączyć się lokalnie? –
@BrianCain Tak, używając 127.0.0.1 na tym samym komputerze. –
Myślę, że "lista przekierowania portów na pierwszym obrazie" pokazuje tylko odwzorowania ręczne. –