Secondo la documentazione , Python socket.send()
:
Restituisce il numero di byte inviati.
Tuttavia, quando lo uso, sembra di tornare il byte che è stato lo scorso mandato, non il numero totale di byte inviati. Considerate questo codice:
>>> 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
Questo SO posta sembra legata , anche se non risponde alla mia domanda.
Quello che mi aspetto di vedere è r == 1
per ogni linea.
risolto:
Capito. Questo funziona:
>>> y = bytearray(1)
>>> y[0] = 125
>>> r = s.send(y)
>>> print(r)
1
La ragione per cui ho messo bytes()
lì per cominciare, è perché senza di essa si ottiene:
>>> r = s.send(125)
TypeError: a bytes-like object is required, not 'int'