我正在使用套接字庫進行網絡連接的python中的多人遊戲。該遊戲將支持LAN上播放。一名玩家將設置服務器,局域網上的其他玩家將能夠加入遊戲。爲了實現這一點,我需要一個簡單的方法讓玩家發現可用服務器的列表(玩家不應該被期望輸入IP地址!)。我的首選解決方案將只使用python套接字庫(以及可選的標準庫的其他部分)。如何使服務器可發現到局域網客戶端
我所尋找的是客戶端和服務器代碼:
客戶:廣播遊戲的所有計算機監聽局域網
服務器(S)在某一端口上的要求:回覆客戶端的可用性
試圖回答在下面的回答中,漢斯的建議,UDP套接字可用於響應廣播請求f rom客戶端。
服務器:
#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)
客戶:
#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
還有沒有其他令人信服的方式來處理這個問題的曝光率?
你應該尋求幫助的代碼不是戰略 - 你也許可以流連聊天室收到這樣的問題回答 – PyNEwbie