Я пытаюсь подключиться к почтовому серверу pop3 с использованием TCP, но когда я пытаюсь отправить 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);
Где ADDR
является IP и PORT
является порт сервера я пытаюсь подключиться (в моем случае 188.125.69.47 и 995). Из того, что я прочитал в RFC, после connect()
я должен получить следующее сообщение:
+OK hello from ....
Вы подключаетесь к ** POP3s **, который является POP3 через SSL. Сначала вам нужно инициировать SSL-соединение. Сравните 'nc -v 188.125.69.47 995' (ничего там) с' openssl s_client -connect 188.125.69.47: 995' (* + OK привет ... *). – tomasz