Код: Выделить всё
def _recv(socket, size: int):
data = []
received = 0
while size != received:
chunk, _ = socket.recv(size - received)
data.append(chunk)
received += len(chunk)
return b''.join(data)
Сейчас я пишу UDP-сервер, так как UDP — непотоковый протокол, я не могу использовать Recvfrom дважды для чтения одного и того же пакета, поэтому я использую код следующим образом:
Код: Выделить всё
def _recvfrom(socket, size: int):
return socket.recvfrom(size)[0]
Код: Выделить всё
These calls return the number of bytes received, or -1 if an error occurred.
In the event of an error, errno is set to indicate the error.
Мой вопрос: как отличить частичный пакет UDP от полного пакета UDP, полученного от Recv_from? Или, более конкретно, как отличить Recvfrom, завершившийся из-за программного прерывания, от успешного?
Подробнее здесь: https://stackoverflow.com/questions/578 ... n-recvfrom
Мобильная версия