代理服务器Csocket(HTTP)无法正常加载图像?

时间:2019-05-28 15:15:03

标签: c++ c sockets proxy

我正在使用Csocket类编写代理服务器,我使用浏览器将代理设置为本地主机,页面不包含example.com之类的图片,这很不错。但是页面包含图像时,它只是加载html内容,而不加载图像。

CSocket connector;
        if (server.Accept(connector))
        {
            cout << "\nDConnected!!!";
            char s[10000] = { NULL };
            // receive from browser
            connector.Receive(s, 10000, 0);
            cout << s << endl;
            char host[50] = "";
            // get host name
            for (int i = 11; s[i] != '/'; i++)
            {
                host[i-11] = s[i];
            }
            //
            // get ip
            char* ip = get_ip(host);
            cout << ip<<endl;
            // send request to destination
            CSocket client;
            client.Create();
            // connet to remote server
            if (client.Connect(convertCharArrayToLPCWSTR(ip), PORT) != FALSE)
            {
                cout << "\nResponse:"<<endl;
                char buff[BUFF_SIZE+1] = {NULL};
                char path[] = "";
                char request[1000] = { 0 };
                cout << request << endl;
                sprintf(request,"GET /%s HTTP/1.1\r\nHost: %s\r\nUser-Agent: Mozilla/5.0\r\nConnection: close\r\n\r\n",path,host);
                client.Send(request, strlen(request), 0);
                // get reveive content respon from destination server
                memset(buff, 0, BUFF_SIZE);
                int size;
                while ((size = client.Receive((char*)buff, BUFF_SIZE, 0)) > 0)
                {
                    // send back to client
                    connector.Send((char*)buff, size, 0);
                    //memset(buff, 0, size);
                }
                if (size <= 0)
                {
                    cout << "Error receiving data";
                }
                client.Close();
            }
        }
        connector.Close();
        server.Close();
    }

0 个答案:

没有答案