2016-09-29 1 views
0

Ich möchte ein Spiel mit Python und PyGame machen, wo zwei Spieler über Wi-Fi in verschiedenen Netzwerken Netzwerken spielen. Ich habe momentan diesen Code (den ich von einem Video bekommen habe).Kommunikation zu verschiedenen Netzwerken

# SERVER 

import socket 

def Main(): 
    host = '127.0.0.1' 
    port = 5000 

    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
    s.bind((host,port)) 


    print("Server Started.") 
    while True: 
     data, addr = s.recvfrom(1024) 
     data = data.decode('utf-8') 
     print("message From: " + str(addr)) 
     print("from connected user: " + data) 
     data = data.upper() 
     print("sending: " + data) 
     s.sendto(data.encode('utf-8'), addr) 
    c.close() 

if __name__ == '__main__': 
    Main() 

# CLIENT 

import socket 

def Main(): 
    host = '127.0.0.1' 
    port = 5001 

    server = ('127.0.0.1',5000) 

    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
    s.bind((host, port)) 

    message = raw_input("-> ") 
    while message != 'q': 
     s.sendto(message.encode('utf-8'), server) 
     data, addr = s.recvfrom(1024) 
     data = data.decode('utf-8') 
     print('Received from server: ' + data) 
     message = raw_input("-> ") 
    s.close() 

if __name__ == '__main__': 
    Main() 

Dies funktioniert auf der gleichen Maschine. Wie kann ich dies auf zwei verschiedenen Computern (in zwei verschiedenen LANs) durchführen?

+0

Sie gehen zu müssen, um eine Verbindung zu den tatsächlichen IP-Adressen anstelle der Loopback-Adresse herzustellen. Wenn die beiden Netzwerke kommunizieren können, sollte es funktionieren. –

+0

@RonMaupin, muss er nicht auch "port-forward"? – coder

+0

@coder, das hängt davon ab. Es gibt nichts in der Frage über NAT. Es gibt viele, viele Netzwerke, die kein NAT verwenden. –

Antwort

0

Änderung host= '0.0.0.0' (für den Server)

das es zu jedem verfügbaren Schnittstelle veröffentlichen macht ... wenn Sie einen Router Sie (wahrscheinlich) haben müssen auch die Port-Forward-Einstellungen des Routers verwenden, um direkten Verkehr zum richtigen Computer

als beiseite ... was ist das für ein Unsinn? server = ('127.0.0.1',5000)

für die Kunden ... setzen nur die öffentliche IP-Adresse Verkleidung Ihres Netzwerks mit dem entsprechenden Anschluss (wenn Sie Forwarding verwenden) ... Sie diese IP-Adresse canfind @http://whatismyip.com

+0

Wenn ich den Server in meine öffentliche IP-Adresse ändere, passiert nichts, wenn ich versuche, Daten zu senden. Wenn ich dasselbe auf einem anderen Gerät (immer noch im selben Netzwerk) versuche, bekomme ich: socket.error: [Errno 111] Verbindung abgelehnt. –

Verwandte Themen