Например:
Код: Выделить всё
>>> import socket
>>> sock = socket.socket(socket.AF_NETLINK, socket.SOCK_DGRAM, socket.NETLINK_ROUTE)
>>> sock.bind((0,0))
>>> sock.send('\24\0\0\0\22\0\1\3\23\0364O\0\0\0\0\21\0\0\0') # struct nlmsghdr
20
>>> sock.recv(10000)
'\xe4\x03\x00\x00 ... ' (+3000 more bytes)
Я могу sock.recv( X, socket.MSG_PEEK) для чтения X байтов без потери данных; но при этом прочитанные данные, конечно, не извлекаются из буфера приема.
Я думал, что любые непрочитанные данные останутся в буфере до тех пор, пока не будут прочитаны. Что я делаю неправильно? Я бы предпочел не просто гадать, сколько данных может быть доступно...
Подробнее здесь: https://stackoverflow.com/questions/921 ... ecv-buffer
Мобильная версия