Pracuję nad grą dla wielu graczy w Pythonie, która używa biblioteki gniazd do tworzenia sieci. Gra będzie obsługiwać odtwarzanie przez sieć LAN. Jeden gracz skonfiguruje serwer, a inni gracze w sieci LAN będą mogli dołączyć do gry.Jak uczynić serwer wykrywalnym dla klientów LAN
Aby to wdrożyć, potrzebuję prostego sposobu, aby gracze odkryli listę dostępnych serwerów (gracze nie powinni oczekiwać, że będą musieli podawać adresy IP!). Moim preferowanym rozwiązaniem byłaby tylko biblioteka gniazd Pythona (i opcjonalnie inne części biblioteki standardowej).
Co szukam jest klient i serwer kod:
klient: rozgłasza swój wniosek do gier do wszystkich maszyn słuchania na określonym porcie w sieci LAN
serwera (ów): odpowiedzi do klienta z jego dostępności
PRÓBA oDPOWIEDŹ po poradę Hansa w poniższej jego odpowiedź, gniazdo UDP mogą być wykorzystywane do reagowania transmisję żąda f rom klienta.
Serwer:
#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)
Klient:
#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
Czy istnieją inne istotne sposoby obsługi wykrywalność tego problemu?
Powinieneś być z prośbą o pomoc z kodem nie strategii - można prawdopodobnie obijać czacie, aby na to pytanie odpowiedział – PyNEwbie