【发布时间】:2014-05-17 16:32:45
【问题描述】:
我在 Python 3.4 中编写了一个用于读取数据的简单套接字客户端
我遇到的问题是,当服务器发送少量数据(大约1000)字节时,它会完美读取它,但是当处理大量数据时(9500 字节)它只会给我一小块数据(比如1100-ish块)。我似乎无法弄清楚为什么在处理大量数据时它的行为如此不规律。我知道我的数据不大于ssize_t 最大32767。
它在处理小数据时工作得很好,完全变成 180 并且在处理大量数据时表现不同。我知道这在 TCP 服务器中不是问题,因为我使用 PHP TCP 客户端对其进行了测试,并且在处理大量数据时它运行良好。
非常感谢任何帮助。
import socket
import json
# Written in Python 3.4.
class SocketClient:
def __init__(self, host, port, format, timeout = None):
# Constructor
self.host = host
self.port = port
self.format = format
self.timeout = timeout
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
def send(self, firstname, lastname, parameters = [], format = 'json'):
if self.socket is not None:
self.socket.connect((self.host, self.port))
data = {}
data['firstname'] = firstname
data['lastname'] = lastname
data['parameters'] = parameters
data['format'] = format
self.socket.send(bytes(json.dumps(data), "utf-8"))
result = self.socket.recv(32767)
result = result.decode()
return result
def shutdown(self):
if socket is not None:
self.socket.shutdown(socket.SHUT_RDWR)
self.socket.close()
if __name__ == __main__:
client = SocketClient("127.0.0.1", 8080, 'json')
response = client.send('foo', 'bar', ['foobar'])
print(response)
client.shutdown()
【问题讨论】: