C 从套接字读取消息挂起
我正在尝试使用TCP连接到pop3邮件服务器,但是当我尝试C 从套接字读取消息挂起,c,linux,sockets,ssl,pop3,C,Linux,Sockets,Ssl,Pop3,我正在尝试使用TCP连接到pop3邮件服务器,但是当我尝试read()在connect()之后立即读取邮件时,控制台就挂起了 int sd; struct sockaddr_in server; if ((sd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror ("Error: socket()\n"); return errno; } server.sin_family = AF_INET; server.sin_addr
read()
在connect()
之后立即读取邮件时,控制台就挂起了
int sd;
struct sockaddr_in server;
if ((sd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror ("Error: socket()\n");
return errno;
}
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr(ADDR);
server.sin_port = htons(PORT);
if (connect(sd, (struct sockaddr *) &server, sizeof(struct sockaddr)) == -1) {
perror("Error: connect()\n");
return errno;
}
char message[100];
read(sd, message, 100); // <== here it hangs
printf ("message: %s\n", message);
close (sd);
由于服务器未发送任何数据,所以读取不会提供任何信息。您是对的,在POP3中,服务器应该首先向您发送hello消息,但当您连接到时,需要首先建立SSL会话。但是,这需要客户提供首字母 例如,您需要一个库来建立SSL连接,然后在POP3中进行对话 这个问题的答案也可能有帮助: .您正在连接到POP3,即通过SSL连接的POP3。您需要首先启动SSL连接。比较
nc-v 188.125.69.47 995
(没有)和openssl s_客户端-connect188.125.69.47:995
(+好的,您好…)。谢谢,我找到了关于如何使用ssl的示例,现在可以使用了。
+OK hello from ....