LAN müşterilerine keşfedilebilir bir sunucu nasıl yapılır. Oyun LAN üzerinden oynayacaktır. Bir oyuncu sunucuyu kuracak ve LAN'daki diğer oyuncular oyuna katılabilecek. Ben onun ağ için soket kütüphanesi kullanan Python çok oyunculu oyun üzerinde çalışıyorum
Bunu uygulamak için
, oyuncuların mevcut sunucularının listesini keşfetmek için basit bir yola ihtiyaç (oyuncular IP adreslerini girmek zorunda beklenen olmamalıdır!). Tercih ettiğim çözüm sadece python soket kitaplığını (ve isteğe bağlı olarak standart kitaplığın diğer bölümlerini) kullanırdı.istemci:
Ne arıyorum istemci ve sunucu kodu LAN
sunucu (lar) üzerinde belli bir bağlantı noktasında dinleme tüm makinelere oyunlar için kendi isteği yayınlar: onun durumu ile müşteriye cevap
aşağıda onun cevabını Hans'ın tavsiyelerine uyarak girişimde bulundukları YANIT, UDP soket yayını cevap kullanılabilir
Sunucu:
#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)
Müşteri:
#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
bu keşfedilebilirlik sorunu işlemek üzere diğer zorlayıcı yolları var mı?
- muhtemelen bu soru cevap – PyNEwbie