Salve.
Uso Win32, sempre e comunque.
Sto cercando di fare un minimale client di MSN (ho la febbre e non posso ne uscire ne stare con la morosa...quindi la creatività prende il sopravvento). Così seguendo l'apposita guida, ho fatto bei passi in avanti.
Una volta fatto un rimbalzo di server, richieste delle informazioni e avuta la notification string, il protocollo dice di collegarsi a https://login.live.com/RST.srf
Questo è già il primo problema.
Come faccio ad andare con i socket via SSL?
Cercando in MSDN, pare che WsaSetSocketSecurity "dovrebbe" fare al caso mio.
O meglio, da quanto ho capito, farà in modo che una WsaQuerySocketSecurity dall'altro lato dia esito positivo.
Così, compilati i pochi campi, avrei un ipotetico socket sicuro.
E ora?
Ho in modo grezzo cercato di rilevare l'indirizzo ip del server (come ho già fatto prima) con
codice:
getaddrinfo("https://login.live.com/RST.srf","443",&in,&out);
Ma ovviamente fallisce. Ritorna ovviamente bene mettendo solo login.live.com (con https fallisce lo stesso).
Quindi ok, mi collego a login.live.com sulla porta 443 (che tra l'altro non ci riesco, dato che la connessione va in timeout)
codice:
SOCKET authsock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
SOCKET_SECURITY_SETTINGS security;
security.SecurityFlags = SOCKET_SETTINGS_GUARANTEE_ENCRYPTION;
security.SecurityProtocol = SOCKET_SECURITY_PROTOCOL_DEFAULT;
if (WSASetSocketSecurity(authsock,&security,sizeof(security),NULL,NULL) != 0)
{
cout <<"Argh.";
}
if (getaddrinfo("login.live.com","443",&in,&out) != 0)
{
cout <<"Gino.";
}
SocketAddr.S_un = ((struct sockaddr_in *)(out->ai_addr))->sin_addr.S_un;
std::cout <<"\nlogin.live.com risolto come: " << inet_ntoa(SocketAddr) <<endl;
if (connect(authsock,out->ai_addr,out->ai_addrlen) != 0)
{
std::cout <<"No no no." <<endl;
}
freeaddrinfo(out);
Stampa "No no no"
E poi? Dove vado? Cosa è quel file srf?
La documentazione dice che devo inviargli una sorta di file XML, ma senza sapere come connettermi non posso fare molto.
Grazie!!