Arm(android)c ++ https代理

时间:2016-08-03 13:13:46

标签: android c++ proxy android-ndk

我有一个适用于Linux和Android的HTTP和HTTPs代理。 我有各种Android设备 - Nexus 5(CPU 2260,RAM 2Gb),Nexus 7(CPU 1200,RAM 1Gb)和Nexus 9(CPU 2300,RAM 2Gb)。

问题在于,虽然HTTP代理在所有设备上运行良好,但在使用HTTPs代理时,Nexus 7无法打开繁重的页面。

我假设这是由RAM和/或CPU短缺引起的。我可以在下面的代码中更改一些内容来修复它吗?我需要我的代理才能在弱设备上工作。

我的代码:

当我连接网站时,我致电:

void connection::inform_browser_ok() {

    const std::string answer = "HTTP/1.1 200 Connection  established\r\n\r\n";
    ba::async_write(bsocket_, ba::buffer(answer),
                boost::bind(&connection::browser_read_ssl,
                shared_from_this(),
                ba::placeholders::error,
                ba::placeholders::bytes_transferred));
}

然后我收取回调费用:

void connection::browser_read_ssl(const bs::error_code& err, size_t len) {

    if(!err) {
        async_read(bsocket_, ba::buffer(bbuffer), ba::transfer_at_least(1),
                           boost::bind(&connection::server_write_ssl,
                                       shared_from_this(),
                                       ba::placeholders::error,
                                       ba::placeholders::bytes_transferred));

    }else {
        shutdown();
    }
}


void connection::browser_write_ssl(const bs::error_code& err, size_t len) {

    if(!err) {
        ba::async_write(bsocket_, ba::buffer(sbuffer, len),
                        boost::bind(&connection::browser_read_ssl,
                        shared_from_this(),
                        ba::placeholders::error,
                        ba::placeholders::bytes_transferred));

    async_read(ssocket_, ba::buffer(sbuffer), ba::transfer_at_least(1),
                       boost::bind(&connection::browser_write_ssl,
                       shared_from_this(),
                       ba::placeholders::error,
                       ba::placeholders::bytes_transferred));

    }else {
        shutdown();
    }
}


void connection::server_read_ssl(const bs::error_code& err, size_t len) {

    if(!err) {

        async_read(ssocket_, ba::buffer(sbuffer), ba::transfer_at_least(1),
                       boost::bind(&connection::browser_write_ssl,
                       shared_from_this(),
                       ba::placeholders::error,
                       ba::placeholders::bytes_transferred));

    }else {
         shutdown();
     }
 }


void connection::server_write_ssl(const bs::error_code& err, size_t len) {

    if(!err) {
        ba::async_write(ssocket_, ba::buffer(bbuffer, len),
            boost::bind(&connection::server_read_ssl, shared_from_this(),
            ba::placeholders::error,
            ba::placeholders::bytes_transferred));

    async_read(bsocket_, ba::buffer(bbuffer), ba::transfer_at_least(1),
               boost::bind(&connection::server_write_ssl,
               shared_from_this(),
               ba::placeholders::error,
               ba::placeholders::bytes_transferred));

    }else {
        shutdown();
    }

}

有人可以告诉我 - 出了什么问题?我的代码如何修复?

更新1。 我无法重复之前没有加载页面的错误 - 现在我得到类似

的内容

1)“此站点无法提供安全连接” - 我想在server_read_ssl中丢失了一些数据......或者联合了2个不同的缓冲区..

2)看起来很糟糕的页面 - (我可以猜到 - CSS没有加载)。

0 个答案:

没有答案