Conexiune HTTPS cu ajutorul WINSOCK ?

Intrebari despre limbajul C++, standardul C++, STL, OOP in C++ sau alte subiecte nelegate de VisualC++
Post Reply
Senzo
Junior
Junior
Posts: 3
Joined: 13 Mar 2012, 12:57

Conexiune HTTPS cu ajutorul WINSOCK ?

Post by Senzo » 13 Mar 2012, 13:22

Salut,

Sunt incepator in programarea c / c++ ma folosesc de cunostintele dobandite cu alte limbaje de programare. De ceva timp (aproximativ 2 luni) dintro ambitie personala am inceput sa lucrez la un proiect care implica conectarea unui id pe Yahoo! Messenger. Pentru aceasta se foloseste protocolul impus de Yahoo! si anume YMSGR, am studiat protocolul si am inteles cum functioneaza. Am folosit WINSOCK pentru connectare la server dar m-am lovit de o problema la unul dintre pasii anteriori autentificarii pe server care necesita o conexiune HTTPS la o pagina yahoo. AIci vine intrebarea. Se poate stabilii o conexiune HTTPS cu ajutorul WINSOCK? (Conexiune HTTP am reusit)

Multumesc anticipat.



User avatar
Marius Bancila
Fondator
Fondator
Posts: 2344
Joined: 11 Jul 2007, 11:45
Judet: Timiş
Location: Timisoara
Contact:

Re: Conexiune HTTPS cu ajutorul WINSOCK ?

Post by Marius Bancila » 13 Mar 2012, 14:39

HTTPS inseamna HTTP + SSL/TLS. Asta inseamna ca poti folosi WINSOCK pentru HTTP dar ai nevoie si de encryptare SSL/TLS.

Uite niste linkuri:
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
http://www.coastrd.com/c-schannel-smtp
Marius Bancila
Fondator Codexpert, Microsoft MVP VC++
Site personal | Blog

User avatar
cristianamarie
Membru++
Membru++
Posts: 480
Joined: 12 Mar 2009, 18:47
Judet: Iaşi
Location: Iasi

Re: Conexiune HTTPS cu ajutorul WINSOCK ?

Post by cristianamarie » 13 Mar 2012, 19:48

Nuclear launch detected

Senzo
Junior
Junior
Posts: 3
Joined: 13 Mar 2012, 12:57

Re: Conexiune HTTPS cu ajutorul WINSOCK ?

Post by Senzo » 16 Mar 2012, 12:33

Multumesc mult pentru raspunsuri. Dupa cateva zile de incercari tot nu am reusit sa ajung la o varianta de cod compilabila. Compilatorul imi indica niste erori in fisierele header precum wincrypt.h sau sspi.h. Sigur am omis ceva. Daca cineva ar putea sa ma ajute cu un cod pentru conexiunea https compilabil as fii recunoscator.

Multumesc anticipat.

User avatar
bu7ch3r
Membru++
Membru++
Posts: 326
Joined: 17 May 2011, 15:17
Judet: Iaşi
Location: Sofia
Contact:

Re: Conexiune HTTPS cu ajutorul WINSOCK ?

Post by bu7ch3r » 16 Mar 2012, 13:09

ce erori?
pune:

Code: Select all

#pragma comment(lib, "Secur32.lib")
#pragma comment(lib, "Advapi32.lib")
Cu stima,
Lupu Claudiu

User avatar
cristianamarie
Membru++
Membru++
Posts: 480
Joined: 12 Mar 2009, 18:47
Judet: Iaşi
Location: Iasi

Re: Conexiune HTTPS cu ajutorul WINSOCK ?

Post by cristianamarie » 16 Mar 2012, 16:07

#define SECURITY_WIN32 pentru security.h, parca
Nuclear launch detected

Senzo
Junior
Junior
Posts: 3
Joined: 13 Mar 2012, 12:57

Re: Conexiune HTTPS cu ajutorul WINSOCK ?

Post by Senzo » 08 Jul 2012, 18:08

Am incercat cam tot ce am gasit pe net despre asta si tot nu am reusit. Cu scuzele de rigoare ca sunt asa insistent va mai cer o data ajutor. Eu am urmatoarea functie cu care fac conexiunile, cum ar trebui modificata pentru ssl?

Code: Select all

string yconnect(string server, string request, int port) {
    string response;
    int resp_leng;

    char buffer[BUFFERSIZE];
    struct sockaddr_in serveraddr;
    int sock;

    WSADATA wsaData;
    char *ipaddress = const_cast<char*>(server.c_str());
    //int port = 5050;

    if (WSAStartup(MAKEWORD(2, 0), &wsaData) != 0)
        die_with_wserror("Functia WSAStartup() failed");

    if ((sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
        die_with_wserror("Functia socket() failed");

    memset(&serveraddr, 0, sizeof(serveraddr));
    serveraddr.sin_family      = AF_INET;
    serveraddr.sin_addr.s_addr = inet_addr(ipaddress);
    serveraddr.sin_port        = htons((unsigned short) port);
    if (connect(sock, (struct sockaddr *) &serveraddr, sizeof(serveraddr)) < 0)
        die_with_wserror("Functia connect() failed");

    if (send(sock, request.c_str(), request.length(), 0) != request.length())
        die_with_wserror("Functia send() numar diferit de biti");

    response = "";
    resp_leng= BUFFERSIZE;
    while (resp_leng == BUFFERSIZE)
    {
        resp_leng= recv(sock, (char*)&buffer, BUFFERSIZE, 0);
    }
    for(int i=0; i<resp_leng; i++) {
         response += char(int(buffer[i]));            
    }
    
    closesocket(sock);

    WSACleanup();
    return response;          
}
Multumesc anticipat.

User avatar
cristianamarie
Membru++
Membru++
Posts: 480
Joined: 12 Mar 2009, 18:47
Judet: Iaşi
Location: Iasi

Re: Conexiune HTTPS cu ajutorul WINSOCK ?

Post by cristianamarie » 26 Jul 2012, 09:44

Pai pentru SSL folosesti o librarie de SSL (OpenSSL). Altfel cu WinInet si cu flagul de secure connection.
Nuclear launch detected

Post Reply