我正在使用套接字库进行网络连接的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