android tcp socket 丢数据,Python TCP套接字在recv中丢失数据[行为怪异]

在Python 3.4中,一个简单的socket客户端在接收到大量数据(如9500字节)时,只能读取到部分数据,而处理小量数据(如1000字节)则正常。这个问题在使用PHP-TCP客户端测试时并未出现,表明问题可能出在Python客户端的实现上,特别是数据接收的部分。代码示例展示了如何建立和关闭socket连接,以及发送和接收数据的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我编写了一个简单的socket客户机来读取python3.4中的数据

我遇到的问题是,当服务器发送少量的数据(大约1000)字节时,它将完美地读取它,但是当大量数据在(9500字节)被处理时,它只会给我一小部分数据(比如1100-ish块)。我似乎不明白为什么它在处理大量数据时表现得如此不稳定。我知道我的数据不大于ssize_t最大值32767。在

它在处理小数据时工作得很好,而在处理大量数据时则完全不同。我知道这在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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值