簡體   English   中英

從套接字讀取消息掛起

[英]Reading message from socket hangs

我正在嘗試使用TCP連接到pop3郵件服務器,但是當我嘗試在connect()之后立即read()消息時,控制台只會掛起。

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);

其中ADDR是ip, PORT是我要連接的服務器的端口(在我的情況下為188.125.69.47和995)。 根據我在RFC中閱讀的內容,在connect()我應該收到以下消息:

+OK hello from ....

您的讀取沒有任何收益,因為服務器未發送任何數據。 沒錯,在POP3服務器中應該首先向您發送問候消息,但是當您通過端口995連接到POP3時 ,首先需要建立SSL會話。 但是,這需要客戶端進行初始握手

您將需要一個庫來建立SSL連接,然后使用POP3進行通信,例如OpenSSL

這個問題的答案也可能會有所幫助: 如何在C中通過SSL使用POP3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM