Networking 关于POP3消息终止八位字节的问题

Networking 关于POP3消息终止八位字节的问题,networking,pop3,Networking,Pop3,这是来自POP3 RFC “对某些命令的响应是多行的。在这些情况下 在发送第一行 响应和CRLF,发送任何附加行,每个行终止 通过CRLF对。当所有响应行都已发送时 发送最后一行,由一个终止八位字节(十进制代码)组成 046,“.”和一个CRLF对。如果多行响应的任何一行 以终止八位字节开始,行由 将终止八位字节预挂起到响应的该行。 因此,多行响应以五个八位字节终止 “CRLF.CRLF”。当检查多行响应时,客户端检查 查看行是否以终止八位字节开始。如果是,如果是 除CRLF之外的其他八位字节紧

这是来自POP3 RFC

“对某些命令的响应是多行的。在这些情况下 在发送第一行 响应和CRLF,发送任何附加行,每个行终止 通过CRLF对。当所有响应行都已发送时 发送最后一行,由一个终止八位字节(十进制代码)组成 046,“.”和一个CRLF对。如果多行响应的任何一行 以终止八位字节开始,行由 将终止八位字节预挂起到响应的该行。 因此,多行响应以五个八位字节终止 “CRLF.CRLF”。当检查多行响应时,客户端检查 查看行是否以终止八位字节开始。如果是,如果是 除CRLF之外的其他八位字节紧随其后,该行的第一个八位字节 终止八位字节)被剥离。如果是,如果CRLF立即 后跟终止字符,然后是来自POP的响应 服务器结束,不考虑包含“.CRLF”的行 多行响应的一部分。”

嗯,我有这个问题,例如gmail有时发送终止八位组,然后在下一行发送CRLF对。例如:

"+OK blah blah\r\n"
"blah blah.\r\n"
"\r\n"
这是非常罕见的,但有时会发生,因此在这种情况下,我显然无法确定消息的结尾,因为我希望有一行由“.”组成。\r\n。说真的,是Gmail违反了POP3协议还是我做错了什么?还有第二个问题,英语不是我的第一语言,所以我不能完全理解:

如果多行响应的任何一行以终止八位字节开始,则通过将终止八位字节预挂起到响应的该行,该行被“字节填充”。 因此,多行响应以五个八位字节“CRLF.CRLF”终止


什么时候使用CRLF.CRLF?有人能给我举个简单的例子吗?rfc表示,当响应的任何一行以终止八位字节开始时,都会使用该命令。但是在以CRLF.CRLF结尾的消息中,我没有看到任何以“.”开头的行。我查过了。也许我不明白什么,这就是为什么我要问

如果您发布用于读取套接字的代码,将非常有帮助。但我会尝试用这个例子来回答你问题的第二部分:

如果回答是:

hello world\r\n
we are doing fine\r\n
.500 is same as one-half\r\n
this is the last line\r\n
服务器必须以以下方式发送:

hello world\r\n
we are doing fine\r\n
..500 is same as one-half\r\n
this is the last line\r\n
.\r\n

因此,您可以看到它“字节填充”了一个额外的“.”,因此“.500”可以作为响应的一部分进行区分。最后五个八位字节也是“\r\n.\r\n”。

这毫无意义。除非是由CR,LF对引起的,否则怎么会有“下一行”?我想问题一定出在你的读取套接字程序中。你在查伊根吗?我不知道你是什么意思。这些不是实际消息中的行,很明显,实际消息中的行以CRLF对终止并分隔,但我给出的示例由来自服务器的不同响应组成。当然,POP3 RFC说它们是用CRLF对终止的,但它们不是,至少Gmail没有这样做。