python - 服务器发送速度比客户端接收速度快
问题描述
我的服务器发送对象的速度比客户端接收的快得多。这就是客户端接收 10 秒前发送的对象的原因,因为客户端必须接收队列中的每个对象。所以我的问题是:我如何减慢服务器速度或让我的客户端接收速度更快?
编辑:我将 time.sleep(0.1) 添加到服务器但有更有效的方法吗?
这是我的网络课:
import socket
import pickle
class Network:
def __init__(self):
self.client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.server = "192.168.1.15"
self.port = 5555
self.addr = (self.server, self.port)
self.player = self.connect()
def get_player(self):
return self.player
def connect(self):
try:
self.client.connect(self.addr)
except:
pass
def send_object(self, data):
self.client.send(pickle.dumps(data))
def get_object(self):
return pickle.loads(self.client.recv(1024))
def send_msg(self, data):
self.client.send(bytes(data, "utf-8"))
def get_msg(self):
return self.client.recv(1024).decode("utf-8")
和我的服务器发送时:
p_count = conn.recv(1024).decode("utf-8")
if p_count:
games.append(Game(game_id, int(p_count), ip))
game_id += 1
while True:
conn.send(pickle.dumps(games[-1]))
和我的客户收到时:
def update(self):
global bg_surface
try:
self.game = n.get_object()
self.player_in = self.game.players_ready
bg_surface = pygame.image.load('./bilder/background3.jpg').convert()
bg_surface = pygame.transform.scale(bg_surface, (screen_width, screen_height))
self.warte_text = Label(f"Warte auf Spieler {self.player_in}/{self.player_amount}", 20, (screen_width // 2, screen_height // 2 * 0.25), (255, 0, 0))
self.warte_text.update(bg_surface)
except:
pass
解决方案
推荐阅读
- python - 合并不起作用,即使我按索引设置它
- entity-framework - 是否有任何库支持 aspnetcore 中的用户内容本地化?
- c# - C#中ServiceM8开发(自动生成UUID)
- java - Play 2.5 在模板中使用依赖注入
- mysql - 在一个字段中分隔的外键
- fortran - 错误:Fortran 代码上的不可分类语句(解码)
- wpf - 我在设置树视图根节点的背景颜色时遇到问题。
- algorithm - 伪随机算法
- android - 实现 Google Calendar V3 API 无需用户登录到 Gmail 帐户
- python - Pandas - 在多列中查找和迭代具有匹配值的行并在另一列中相乘