我正在尝试实现SMTP服务器。
问题是我的套接字ObjectID undefinded
建立了新连接后,它没有收到任何字节(示例输出中的空白行),因此我的accept
循环终止了。
我尝试在最初的read
之后发送220
和250
命令,但仍然没有成功。
我的输出:
accept
我的代码:
Socket created
Waiting for incoming connections...
Connection accepted
250 mail.domain.com says hello
Finished reading current message
答案 0 :(得分:2)
您从错误的套接字读取。 accept
返回您应该从中读取的套接字,即input_sockfd
。您正在读取传递给accept
的套接字,而该套接字未连接到客户端,因此read
正确返回0字节。
您在支票n < 0
中也有一对一的错字。 read
在关闭连接时返回0,因此您确实应该检查n <= 0
,否则循环将永远继续进行,始终读取0个字节。