2010-04-24 3 views
0

Я делаю клиент для pop3, и почему-то я не могу понять, как обрабатывать многострочные ответы. Нет никакой разницы в ответе от сервера, будь то одиночный или многострочный, он всегда заканчивается CRLF (учитывая обычный случай), так как я могу узнать, должен ли я снова вызвать recv()?pop3 multiline problem

+3

Учитывая имя пользователя «stupid_idiot», нет смысла тратить время на ответ на этот вопрос. – sbi

ответ

2

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

Последняя строка многострочного ответа содержит только точку "."

Так что смотрите "\r\n.\r\n"

Последняя строка представляет собой знак завершения. Это не часть фактического сообщения.

+0

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

+0

@stupid_idiot просто продолжайте называть recv(), пока не увидите этот маркер конца. Вы не можете знать заранее, когда это закончится. –

+0

Ну, как я понял Александра, если есть только одна строка, то первая тоже последняя - и, таким образом, она заканчивается точкой. Из этого следует, что, если он не заканчивается точкой, это не последний, и, следовательно, не единственный. '<читает его снова>' Ну, это, безусловно, кажется логичным. Где проблема, глупо ... О, я вижу. Неважно. – sbi