Сообщить об ошибке.

Функции CMSG_LEN и CMSG_SPACE модуля socket в Python

Длина и размер буфера для чтения данных из сокета в Python

Синтаксис:

import socket

socket.CMSG_LEN(length)
socket.CMSG_SPACE(length)

Параметры:

  • length - длина получаемых данных.

Возвращаемое значение:

  • рекомендуемый размер буфера для приема данных длиной length.

Описание:

**Функция socket.CMSG_LEN() возвращает общую длину без завершающего заполнения элемента вспомогательных данных со связанными данными заданной длины length.

Это значение часто можно использовать в качестве размера буфера для метода объекта сокета Socket.recvmsg() для получения одного элемента вспомогательных данных, но RFC 3542 требует, чтобы переносимые приложения использовали функцию socket.CMSG_SPACE() и таким образом, включали пространство для заполнения, даже если элемент будет последним в буфере.

**Функция socket.CMSG_SPACE() возвращает размер буфера, необходимый для метода объекта сокета Socket.recvmsg(), чтобы получить элемент вспомогательных данных со связанными данными заданной длины length вместе с любыми завершающими заполнениями. Буферное пространство, необходимое для приема нескольких элементов, представляет собой сумму значений socket.CMSG_SPACE() для связанных с ними длин данных. Вызывает ошибку OverflowError, если длина выходит за допустимый диапазон значений.

Обратите внимание, что некоторые системы могут поддерживать вспомогательные данные без предоставления функции socket.CMSG_SPACE(). Также обратите внимание, что установка размера буфера с использованием результатов этой функции может не точно ограничивать количество получаемых вспомогательных данных, т.к. дополнительные данные могут уместиться в области заполнения.

Функции socket.CMSG_LEN() и socket.CMSG_SPACE() вызывают ошибку OverflowError, если длина length выходит за допустимый диапазон значений.

Доступность: большинство платформ Unix, возможно, другие.

Примеры использования.

>>> import socket
>>> socket.CMSG_LEN(1024)
# 1040
>>> socket.CMSG_SPACE(1024)
# 1040
>>> socket.CMSG_SPACE(2048)
# 2064