0

我正在尝试制作一个简单的邮件服务器来接收电子邮件并使用 C++ 中的套接字在屏幕上打印。我已经制作了程序,一切看起来都很棒,但不起作用。套接字和线程工作得很好,只需使用 netcat 或 telnet 登录即可查看是否有效,但是当我尝试向程序发送电子邮件时,什么也没有发生。

我认为我在流程功能中做错了。看到那个...

void process(int new_sd, void *threadid) {
    int tid = (long) threadid;

    ssize_t bytes_recieved;
    char incomming_data_buffer[1000];

    while (1) {
        bytes_recieved = recv(new_sd, incomming_data_buffer, 1000, 0);

        //    if (bytes_recieved == 0) cout << "host shut down." << endl ;
        if (bytes_recieved == -1)cout << "Recieve Error! :(" << endl ;
        incomming_data_buffer[bytes_recieved] = '\0';

        trimwhitespace(incomming_data_buffer);

        cout << "|" << incomming_data_buffer << "|" << endl;

        if (!strcmp(incomming_data_buffer, "QUIT")) {
            close(new_sd);
            break;
        } else {
            send_text(new_sd, "OK \n");
        }
    }
}

完整的源代码在这里:http ://pastebin.com/vLH8dSAj 在 Linux 上编译:g++ -lm mail.cpp -o mail

谢谢!

4

1 回答 1

1

POP3 是一种协议(阅读RFC 1939),因此您必须实现它才能使用它。连接后,对方不会给你发送任何东西,直到你发送问候消息(“+OK your message here”)。

之后,您必须与远程客户端建立 POP“对话”。

此外,POP 用于从服务器检索消息,因此客户端将连接到您的进程并尝试下载消息。

您必须实现 SMTP 协议(​​阅读RFC 5321)才能接收发送给您的消息。SMTP也是一个协议,所以如果你想让对方给你发送数据,你必须实现它。

于 2014-09-08T16:57:54.643 回答