Avvio un server tramite socket e voglio consentire ai client di connettersi ad esso.Port forwarding in python per consentire connessioni socket
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)
Ora, per altri client da connettere, ho il port forward manualmente e funziona correttamente.
Voglio farlo in modo automatico. -> Provo 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
Apre una porta mostrata nell'immagine in basso. Ma l'elenco di port forwarding mostrato nella prima immagine è vuoto. Non funziona e i client non possono connettersi. Come posso risolvere questo? Cosa mi manca?
Puoi connetterti localmente? –
@BrianCain Sì, utilizzando 127.0.0.1 sulla stessa macchina. –
Penso che la "lista di inoltro porta nella prima immagine" mostra solo mappature manuali. –