Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > Proxy и сокеты


Автор: dandy77 8.7.2009, 21:07
Я пытаюсь подключиться к почтовому серверу через прокси при помощи сокетов. В результате мне recv() из этого кода возвращает HTTP/1.0 403 Forbidden. Кто знает в чем дело? Подскажите? Через броузер я проверял- этот прокси работает.

Код

SOCKET m_hSocket;
    if((m_hSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP))== INVALID_SOCKET )
        AfxMessageBox("Socket Error");

    
    int nPort=80;
    char pszHostAddress[30]="208.78.125.18";

    SOCKADDR_IN sockAddr;
    ZeroMemory(&sockAddr, sizeof(sockAddr));
    sockAddr.sin_family = AF_INET;
    sockAddr.sin_port = htons((u_short)nPort);
    sockAddr.sin_addr.s_addr = inet_addr(pszHostAddress);

    if (sockAddr.sin_addr.s_addr == INADDR_NONE)
    {
        LPHOSTENT lphost;
        lphost = gethostbyname(pszHostAddress);
        
        struct sockaddr_in adr;
        memcpy(&adr.sin_addr,lphost->h_addr_list[0],lphost->h_length); 

        sockAddr.sin_addr.s_addr = ((LPIN_ADDR)lphost->h_addr)->s_addr;
        
    }

    int tmo = 3000;
    setsockopt(m_hSocket,SOL_SOCKET,SO_RCVTIMEO,(const char*)tmo,sizeof(tmo));

    if(connect(m_hSocket, (PSOCKADDR)&sockAddr, sizeof(sockAddr))== INVALID_SOCKET )
    AfxMessageBox("Connect Error");

    

    char sBuf[256];
    int nCmdLength;
    /    sprintf(sBuf, "CONNECT 195.214.192.101:110 HEAD \/ HTTP\/1.1\r\n Host: e.ukr.net\r\n\r\n");
    nCmdLength = strlen(sBuf);

    if(send(m_hSocket, sBuf, nCmdLength, 0)== SOCKET_ERROR )
    AfxMessageBox("Send CONNECT Error!");


    char pszBuf[256];
    int nBuf=sizeof(pszBuf);

    int nData=recv(m_hSocket, pszBuf, nBuf, 0);
    if(nData==0 || nData == SOCKET_ERROR)
    {
        AfxMessageBox("Connect Recv Error");
    }
    else
    {
        pszBuf[nData]=0;
        pDlg->m_info.AddString(pszBuf);
    }

    closesocket(m_hSocket);

Автор: Alca 8.7.2009, 22:35
PopProxyDemo.zip

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)