Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 从套接字读取消息挂起_C_Linux_Sockets_Ssl_Pop3 - Fatal编程技术网

C 从套接字读取消息挂起

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

我正在尝试使用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.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 ....