Есть ли способ узнать, сколько данных доступно в сокете Python для получения? - PullRequest
6 голосов
/ 15 августа 2011

Я понял, что должен использовать ioctl. Здесь есть похожие вопросы:

Мои вопросы:

  1. Что эквивалентно FIONREAD в Python? Как мне вызвать sock.ioctl (), чтобы получить количество доступных байтов?
  2. Что если я использую Python 2.5 в Windows? socket.ioctl является новым в версии 2.6.

Ответы [ 2 ]

3 голосов
/ 15 августа 2011

Поскольку нет портативного способа сделать это (и часто ответ неверен), нет встроенного способа запрашивать его.

Если вы используете неблокирующие сокеты, просто прочитайте как можно больше данных, и будут возвращены только те данные, которые присутствуют.

0 голосов
/ 15 августа 2011

Вы можете получить это число, но это число менее чем полезно. Есть промежуток времени между ядром, считывающим число, и ваш код начинает использовать его. В этом окне больше данных может поступить на сокет. Другими словами, это число, скорее всего, устарело.

...