Ich arbeite an einem Multiplayer-Spiel in Python, das die Socket-Bibliothek für seine Vernetzung verwendet. Das Spiel unterstützt das Spielen über LAN. Ein Spieler wird den Server einrichten und andere Spieler im LAN können dem Spiel beitreten.Wie man einen Server für LAN-Clients erkennbar macht
Um dies zu implementieren, brauche ich eine einfache Möglichkeit für die Spieler, eine Liste der verfügbaren Server zu finden (Spieler sollten nicht erwartet werden, IP-Adressen eingeben zu müssen!). Meine bevorzugte Lösung würde nur die Python-Socket-Bibliothek (und optional andere Teile der Standard-Bibliothek) verwenden.
Was ich suche ist Client- und Server-Code:
Client: sendet seine Anfrage für Spiele für alle Maschinen auf einem bestimmten Port auf dem LAN hören
Server (n): antwortet dem Client mit seiner Verfügbarkeit
VERSUCHTEN ANTWORT nach Hans Rat in seiner Antwort unten, kann ein UDP-Socket-Broadcast reagieren verwendet werden, fordert f vom Kunden.
Server:
#UDP server responds to broadcast packets
#you can have more than one instance of these running
import socket
address = ('', 54545)
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1)
server_socket.bind(address)
while True:
print "Listening"
recv_data, addr = server_socket.recvfrom(2048)
print addr,':',recv_data
server_socket.sendto("*"+recv_data, addr)
Auftraggeber:
#UDP client broadcasts to server(s)
import socket
address = ('<broadcast>', 54545)
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
client_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
data = "Request"
client_socket.sendto(data, address)
while True:
recv_data, addr = client_socket.recvfrom(2048)
print addr,recv_data
Gibt es andere Möglichkeiten, dieses zwingende Auffindbarkeit Problem zu umgehen?
Sie sollten um Hilfe mit dem Code nicht Strategie zu fragen - Sie könnten wahrscheinlich um einen Chat-Raum hängen diese Frage beantwortet – PyNEwbie