接收SMTP邮件

时间:2019-06-17 05:51:59

标签: c smtp postfix-mta

我正在尝试实现SMTP服务器。
问题是我的套接字ObjectID undefinded 建立了新连接后,它没有收到任何字节(示例输出中的空白行),因此我的accept循环终止了。

我尝试在最初的read之后发送220250命令,但仍然没有成功。


我的输出:

accept

我的代码:

Socket created
Waiting for incoming connections...
Connection accepted
250 mail.domain.com says hello

Finished reading current message

1 个答案:

答案 0 :(得分:2)

您从错误的套接字读取。 accept返回您应该从中读取的套接字,即input_sockfd。您正在读取传递给accept的套接字,而该套接字未连接到客户端,因此read正确返回0字节。

您在支票n < 0中也有一对一的错字。 read在关闭连接时返回0,因此您确实应该检查n <= 0,否则循环将永远继续进行,始终读取0个字节。