Итак, я работаю над инфраструктурой Python IRC и использую модуль Python socket
.Мне хочется использовать Twisted?Нет, не совсем.
В любом случае, у меня есть бесконечный цикл чтения и обработки данных из socket.recv(xxxx)
, где xxxx
действительно не имеет значения в этой ситуации.Я разделяю полученные данные на сообщения, используя str.split("\r\n")
, и обрабатываю их одно за другим.
Моя проблема заключается в том, что мне нужно установить конкретный «размер чтения» в socket.recv()
, чтобы определить, сколько данных нужно прочитатьрозетка.Когда я получаю пакет данных (например, когда я подключаюсь к IRC-серверу и получаю MOTD.etc), всегда появляется сообщение, которое охватывает два «чтения» сокета (т.е. часть строки читается в одном socket.recv()
, а остальное читается в следующей итерации бесконечного цикла).
Я не могу обработать неполученные сообщения, и я не уверен, есть ли способ их обнаружения.В идеальной ситуации я получал бы все, что находится в буфере, но не похоже, что socket
предоставляет метод для этого.
Любая помощь?