小编mic*_*616的帖子

如果发送太快,Python 套接字 recv() 不会收到每条消息

我通过套接字将鼠标坐标从 python 服务器发送到 python 客户端。每次在服务器上捕获鼠标移动事件时都会发送鼠标坐标,这意味着经常(每秒十几个)。

问题是当我在不同的主机上使用 python 服务器和 python 客户端时。然后只有部分消息传递给客户端。例如,传递了 3 条第一条消息,未传递 4 条消息,传递了 4 条消息等...

当服务器和客户端在同一主机(本地主机)上时,一切都很好。

当服务器和客户端在不同的主机上时一切都很好,但我使用标准的 Windows Telnet 客户端而不是 python 客户端从服务器读取消息。

我注意到当我在发送的每条消息之间使用 time.sleep(0.4) 中断时,所有消息都会被传递。问题是我需要实时的信息而不是这样的延迟。是否可以使用套接字在 Python 中实现这一点?

下面是我使用的 python 客户端代码:

import pickle
import socket
import sys


host = '192.168.1.222'
port = 8888
try:
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error, msg:
    print "Faile. Error:" + str(msg[0]), "Error message : " + msg[1]
    sys.exit()

mySocket = socket.socket()
mySocket.connect((host,port))

while 1:
    data = mySocket.recv(1024)
    if not data: break
    load_data = pickle.loads(data)

    print …
Run Code Online (Sandbox Code Playgroud)

python sockets

2
推荐指数
1
解决办法
5068
查看次数

标签 统计

python ×1

sockets ×1