Code: Alles auswählen
#Server
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
prt = int(input('PORT: '))
s.bind(('', prt))
#s.bind((socket.gethostbyname(socket.gethostname()), prt))
print('Hosted at ' + str(s.getsockname()))
s.listen(2)
while 1:
cli_sock, cli_addr = s.accept()
print('New connection: ' + str(cli_addr))
cli_sock.send('TEST to ' + str(cli_addr))
Code: Alles auswählen
#Client
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((socket.gethostname(),int(input('Client Port: '))))
s.connect((input('IP: '),int(input('SRVR Port: '))))
print(s.recv(4096))

Es funktioniert problemlos auf meinem lokalen Netzwerk, aber sobald ich von meinem Client die (externe) IP unseres Routers und den Port eingebe bekomme ich timeout. Mein Windows Freund bekommt folgenden Fehler:
Code: Alles auswählen
line 4, in <module>
s.connect((input('IP: '),int(input('SRVR Port: '))))
OSError: [WinError 10051] Ein Socketvorgang bezog sich auf ein nicht verfügbares Netzwerk
Code: Alles auswählen
telnet: connect to address XX.XXX.XX.X: Operation timed out
telnet: Unable to connect to remote host
Mir ist folgende Diskrepanz aufgefallen: Links die Info meines routers, rechts mein Programm

Ich habe verschiedene IPs für den server verwendet: '', '0.0.0.0', socket.gethostbyname(socket.gethostname()), socket.gethostname(), meine Lokale und meine Globale IP Adresse (refused)
Was mache ich falsch?