用C语言编写POP3客户端

3
我正在用C语言编写一个简单的POP3客户端,遇到了以下问题: 在授权状态下,服务器将永远无法识别我的密码:
连接成功:+OK GMX POP3 StreamProxy就绪

user hopatropa@gmx.com
+OK May I have your password, please?

pass ******
-ERR 用户名或密码不正确
但是在telnet中,相同的一系列命令运行得非常好:
+OK GMX POP3 StreamProxy就绪
user hopatropa@gmx.com
+OK May I have your password, please?
pass ******
+OK 邮箱已锁定并准备好
我确信我发送的密码没问题。这是我发送pass命令并收到答案的方式:
sprintf (command, "pass %s\r\n", pass); //pass为包含密码的字符串
    printf("%s", command);
    if (write(sock, command, sizeof(command)) == -1)
    {
        fprintf(stderr, "write() error: %d\n", errno);
        return errno;
    }
    if (read(sock, msgbuff, sizeof(msgbuff)) == -1)
    {
        fprintf(stderr, "read() error: %d\n", errno);
        return errno;
    }
如果能提供任何帮助,将不胜感激。
1个回答

3
为什么你使用 sizeof(command) 而不是 strlen(command) 来获取长度?

哇,我没想到那会起作用...我一直以为服务器在 /r/n 后就停止读取了...我真是太蠢了...谢谢...这个问题困扰我好几个小时了。如果不是这样,我也不会发帖求助。 - John Pope
2
John:对于未来的问题,你可能想看一下Wireshark。 实际上查看网络传输内容总是很有用的。在这种情况下,问题在网络捕获中很容易看到。 - Kristof Provost

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接