ITE平台开发 chapter4 - https通信

1、搭建https服务器 (请参考如下文章,按照里面的做即可)

https://blog.csdn.net/laing92/article/details/104378537

install过后 ,根目录地址:usr/share/nginx/html

更改根目录地址,未能成功,折腾一番后,决定暂时先这样,急着完成下面的步骤。

将下载文件(升级文件)拷贝到usr/share/nginx/html目录下 。

2、写ITE soc平台代码


#define AUDIOLINK_CONTENT_LENGTHS   "Content-Length:"
#define CURL_READ_SIZE 64 * 1024

#include "curl/curl.h"

#define HTTPS_ADDRESS "https://192.168.43.65/ITEPKG03.pkg"
char _certsPath[128];

struct httpBuf
{
    uint8_t     *buf;
    uint32_t    pos;
};

typedef struct MemoryStruct 
{
    uint32_t    *memory;
    uint32_t    size;
}MemoryStruct;

void CreateWorkerThread(void *(*start_routine)(void *), void *arg)
{
    pthread_t      task;
    pthread_attr_t attr;

    pthread_attr_init(&attr);
    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
    pthread_create(&task, &attr, start_routine, arg);
}

size_t WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userdata)
{
    size_t realsize = size * nmemb;
#if 1
    
    MemoryStruct *mem = (MemoryStruct *)userdata;
    mem->memory = (char*)realloc(mem->memory, mem->size + realsize + 1);
    if(mem->memory == NULL) {
        /* out of memory! */
        printf("not enough memory (realloc returned NULL)\n");
        return 0;
    }
    memcpy(&(mem->memory[mem->size]), contents, realsize);
    mem->size += realsize;
    mem->memory[mem->size] = 0;
    
    printf("download :realsize = %d /  %d\n",realsize,mem->size);
#endif
    return realsize;
}

void * DownPackage(void * argv)
{
    CURL *curl;
    CURLcode res;
    bool downloadOK = false;
    curl = curl_easy_init();
    if(curl)
    {
        MemoryStruct writedatachunk;
        writedatachunk.memory = (char*)malloc(1);
        writedatachunk.size = 0;

        //struct curl_slist *curlheaders = NULL;
        //curlheaders = curl_slist_append(curlheaders, s2);
        //curlheaders = curl_slist_append(curlheaders, "Accept: */*");
        //curlheaders = curl_slist_append(curlheaders, "Content-Type: application/octet-stream");
        //curl_easy_setopt(curl, CURLOPT_HTTPHEADER, curlheaders);

        curl_easy_setopt(curl, CURLOPT_URL, HTTPS_ADDRESS1);

        curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 300L);
        curl_easy_setopt(curl, CURLOPT_TIMEOUT, 3600L);

        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&writedatachunk);

        curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);

        //curl_easy_setopt(curl, CURLOPT_CAPATH, _certsPath);
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2L);

        res = curl_easy_perform(curl);

        if(res != CURLE_OK)
        {
            printf("curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
        }
        //curl_slist_free_all(curlheaders);
        curl_easy_cleanup(curl);
        free(writedatachunk.memory);
    }
    return NULL;
}



void main()

{

    //create thread  download package
    CreateWorkerThread(DownPackage,NULL);
    .....
    ......

}

打印信息如下:

GET /ITEPKG03.pkg HTTP/1.1

Host: 192.168.43.65
Accept: */*

< HTTP/1.1 200 OK
< Server: nginx/1.14.0 (Ubuntu)
< Date: Mon, 27 Dec 2021 15:39:21 GMT
< Content-Type: application/octet-stream
< Content-Length: 3310449
< Last-Modified: Mon, 27 Dec 2021 15:29:19 GMT
< Connection: keep-alive
< ETag: "61c9dbcf-328371"
< Accept-Ranges: bytes
<
download :realsize = 16115 / mem->size
download :realsize = 16384 / mem->size
.....

.....
download :realsize = 16384 / mem->size
download :realsize = 16384 / mem->size
download :realsize = 16384 / mem->size
download :realsize = 16384 / mem->size
download :realsize = 1150 / mem->size

具体也可参考curl 官网的相关范例进行修改。

谢谢!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ite-plugin-html-env是一款用于集成开发环境(IDE)中的插件,它主要用于支持HTML代码的编写和编辑。这个插件提供了一系列功能,方便开发人员在IDE中进行HTML页面的开发和调试。 首先,ite-plugin-html-env为开发人员提供了语法高亮功能。它能够根据HTML的语法规则,对代码进行着色,使得代码结构更加清晰,易于阅读和编辑。开发人员可以准确地识别HTML的各个元素、属性和值,减少出错的可能性。 其次,ite-plugin-html-env还支持代码补全功能。开发人员在编写HTML代码时,只需要输入几个字符,这个插件会自动提示相关标签、属性和值等,从而节省了编写代码的时间和精力。代码补全功能还能避免出现拼写错误或者遗漏必要的代码,提高开发效率。 再次,ite-plugin-html-env还提供了代码格式化功能。开发人员可以通过快捷键或者插件的自动识别功能,使得HTML代码的格式符合统一的规范。代码格式化功能可以让代码块的缩进、标签的对齐等效果更加一致,提高了代码的可读性和可维护性。 最后,ite-plugin-html-env还包含了一些调试工具。开发人员可以通过插件提供的浏览器预览功能,即时查看和测试HTML页面的显示效果。这样可以快速发现和修复代码中的问题,提高开发的效率和质量。 总之,ite-plugin-html-env是一款功能丰富的HTML开发插件,它提供了语法高亮、代码补全、代码格式化和浏览器预览等功能,方便开发人员在IDE中进行HTML页面的开发和调试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值