POP3 клиент не получает приветствие от сервера в C++
Я пытаюсь написать простой POP3-клиент, который будет подключаться к серверу pop.gmail.com и получать от него приветствие. Но после подключения к серверу я не могу получить от него никакой информации. Вот мой код до сих пор:
#include <stdio.h>
#include <stdlib.h>
#include <winsock2.h>
#define DEFAULTSIZE 512
#pragma comment(lib,"ws2_32.lib")
int main(int argc , char *argv[])
{
WSADATA wsa;
SOCKET s;
struct hostent *remoteHost;
struct sockaddr_in addr;
char server_reply[DEFAULTSIZE];
int recv_size;
//Initializing winsock
printf("Initialising Winsock...");
if (WSAStartup(MAKEWORD(2,2),&wsa) != 0)
{
printf("Initialising Winsock f ailed. Error Code : %d",WSAGetLastError());
return 1;
}
printf("Initialised.\n");
remoteHost = gethostbyname("pop.gmail.com");
//Creating socket
if((s = socket(remoteHost->h_addrtype, SOCK_STREAM, 0)) == INVALID_SOCKET){
printf("Could not create socket : %d", WSAGetLastError());
return 1;
}
printf("Socket created.\n");
//Initializing address
memcpy(&addr.sin_addr, remoteHost->h_addr_list[0], remoteHost->h_length);
addr.sin_family = remoteHost->h_addrtype;
addr.sin_port = htons( 995 );
//Connecting socket to the address
if(connect(s, (struct sockaddr *)&addr, sizeof(addr)) < 0){
printf("Connecting socket failed. Error Code : %d",WSAGetLastError());
return 1;
}
printf("Socket connected\n");
//Receiving information from the server
if((recv_size = recv(s, server_reply, DEFAULTSIZE, 0)) == SOCKET_ERROR){
printf("Receiving information failed. Error Code : %d",WSAGetLastError());
return 1;
}
printf("Size of how much information has been received: %d\n", recv_size);
for(int i = 0; i < recv_size; ++i){
printf("%c", server_reply[i]);
}
printf("\n");
//Checking if socket is connected
int error_code;
int error_code_size = sizeof(error_code);
getsockopt(s, SOL_SOCKET, SO_ERROR, (char*)&error_code, &error_code_size);
printf("Socket state: %d\n", error_code);
closesocket(s);
WSACleanup();
return 0;
}
Насколько я понимаю из спецификации RFC, я должен получить приветствие от сервера, что-то вроде "+OK POP3 server ready", но я вообще ничего не получаю (recv_size = 0 и error_code = 0). Я попытался подключиться к разным серверам с одинаковыми результатами... Я что-то упустил из документации POP3 или что-то не так с кодом?
Любая помощь высоко ценится!