【发布时间】:2017-08-16 18:03:44
【问题描述】:
According to the docs,Python 的socket.send():
返回发送的字节数。
但是,当我使用它时,它似乎返回上次发送的字节,而不是发送的字节总数。考虑这段代码:
>>> import socket
>>> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
>>> s.connect(('localhost', 12345))
>>> r = s.send(bytes(1))
>>> print(r)
1
>>> r = s.send(bytes(15))
>>> print(r)
15
>>> r = s.send(bytes(150))
>>> print(r)
150
>>> r = s.send(bytes(255))
>>> print(r)
255
>>> r = s.send(bytes(0))
>>> print(r)
0
This SO post seems related,虽然它没有回答我的问题。
我希望看到每一行都是r == 1。
已解决:
我明白了。这有效:
>>> y = bytearray(1)
>>> y[0] = 125
>>> r = s.send(y)
>>> print(r)
1
我把bytes()放在那里的原因是因为没有它你会得到:
>>> r = s.send(125)
TypeError: a bytes-like object is required, not 'int'
【问题讨论】:
-
也许你把
bytes和chr混淆了?