Python 如何改进服务器的连接?
我最近在pygame中开发了一个小的基本多人游戏,最近刚刚完成了服务器。但服务器的问题是,除非其他玩家移动,否则其他玩家的屏幕不会更新。这个问题发生在游戏的客户端和主机端。有没有办法让我的服务器至少更新一下其他玩家的移动 这是服务器代码,非常感谢您的帮助Python 如何改进服务器的连接?,python,python-3.x,sockets,Python,Python 3.x,Sockets,我最近在pygame中开发了一个小的基本多人游戏,最近刚刚完成了服务器。但服务器的问题是,除非其他玩家移动,否则其他玩家的屏幕不会更新。这个问题发生在游戏的客户端和主机端。有没有办法让我的服务器至少更新一下其他玩家的移动 这是服务器代码,非常感谢您的帮助 import socket from _thread import * s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server = '11.0.18.15' port =
import socket
from _thread import *
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server = '11.0.18.15'
port = 7245
server_ip = socket.gethostbyname(server)
try:
s.bind((server, port))
except socket.error as e:
print(str(e))
s.listen(5)
print("Waiting for connection...")
currentId = "0"
pos = ["0:200,200", "1:100,100"]
def threaded_client(conn):
global currentId, pos
conn.send(str.encode(currentId))
currentId = "1"
reply = ""
while True:
try:
data = conn.recv(2048)
reply = data.decode('utf-8')
if not data:
conn.send(str.encode("Goodbye"))
break
else:
print("Received: " + reply)
arr = reply.split(":")
id = int(arr[0])
pos[id] = reply
if id == 0: nid = 1
if id == 1: nid = 0
reply = pos[nid][:]
print("Sending: " + reply)
conn.sendall(str.encode(reply))
except:
break
print("Connection Closed")
conn.close()
while True:
conn, addr = s.accept()
print("Connected to: ", addr)
start_new_thread(threaded_client, (conn,))
不要使用“玩家”和“其他玩家”,而是使用“玩家A”和“玩家B”或其他同样明确的东西。我不知道您是否希望客户端中有数据,但客户端应定期发送数据请求(即使它不移动),然后服务器应立即发送应答-即使没有数据发送。当没有数据时,您应该发送一些消息-即
“空”
。pygame的网络库: