This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

http client demo启用安全连接问题

以下代码都怎么嵌入到程序呢?

SlDateTime_t dt;
struct HTTPCli_SecureParams sparams; //  这两个是函数声明?

/* Set current Date to validate certificate */
dt.sl_tm_day = DATE;
dt.sl_tm_mon = MONTH;
dt.sl_tm_year = YEAR;
dt.sl_tm_hour = HOUR;
dt.sl_tm_min = MINUTE;
dt.sl_tm_sec = SECOND;
sl_DevSet(SL_DEVICE_GENERAL_CONFIGURATION,
SL_DEVICE_GENERAL_CONFIGURATION_DATE_TIME,
sizeof(SlDateTime_t), (unsigned char *)(&dt));   



/* Security parameters */
sparams.method.secureMethod = SL_SO_SEC_METHOD_TLSV1_2;
sparams.mask.secureMask = SL_SEC_MASK_TLS_RSA_WITH_AES_256_CBC_SHA;
strncpy(sparams.cafile, SL_SSL_CA_CERT, sizeof(SL_SSL_CA_CERT));
sparams.privkey[0] = 0;
sparams.cert[0] = 0;
sparams.dhkey[0] = 0;
HTTPCli_setSecureParams(&sparams);

  • struct是结构体,这两个不是函数声明,你查一下,这个结构体初始定义在哪里,然后找一下,推荐你看一下http://blog.csdn.net/snlying/article/details/2887778

  • 看一下c语言课本 typedef 和 struct 的使用就可以了,移植起来非常简单

  • C 原则是 先定义 再使用   

  • 这个是关于时钟的变量的定义,具体怎么移植需要看你程序中用的函数

  • 根据C语言的函数语法规则使用

  • SlDateTime_t dt; /*是表示记录时间的数据结构,包括年、月、日、时、分、秒以及占用的存储空间大小等!可以在软件中查找SlDateTime_t数据的详细定义!*/

     dt.sl_tm_day = DATE;

     dt.sl_tm_mon = MONTH;

    dt.sl_tm_year = YEAR;

    dt.sl_tm_hour = HOUR;

    dt.sl_tm_min = MINUTE;

    dt.sl_tm_sec = SECOND;  

    struct HTTPCli_SecureParams sparams; ///是个明显的结构体变量参数定义

     

  • 谢谢各位 ,换成这个传输通道后  SL_SSL_CA_CERT没有定义? 怎么写  谢谢

  • 建议下载官方的完整软件库然后安装在默认路径的目录下。

  • SlDateTime_t dt;
    struct HTTPCli_SecureParams sparams; //  

    以上两句是定义dt 和sparams分别为SlDateTime_t 、HTTPCli_SecureParams 这样的结构体变量。这两个结构体变量在下面的函数中使用了。前者是时间日期的变量,后者是HTTP的相关参数变量。比如下文程序中 dt.***   和sparams。****

    /* Set current Date to validate certificate */
    dt.sl_tm_day = DATE;
    dt.sl_tm_mon = MONTH;
    dt.sl_tm_year = YEAR;
    dt.sl_tm_hour = HOUR;
    dt.sl_tm_min = MINUTE;
    dt.sl_tm_sec = SECOND;
    sl_DevSet(SL_DEVICE_GENERAL_CONFIGURATION,
    SL_DEVICE_GENERAL_CONFIGURATION_DATE_TIME,
    sizeof(SlDateTime_t), (unsigned char *)(&dt));   



    /* Security parameters */
    sparams.method.secureMethod = SL_SO_SEC_METHOD_TLSV1_2;
    sparams.mask.secureMask = SL_SEC_MASK_TLS_RSA_WITH_AES_256_CBC_SHA;
    strncpy(sparams.cafile, SL_SSL_CA_CERT, sizeof(SL_SSL_CA_CERT));
    sparams.privkey[0] = 0;
    sparams.cert[0] = 0;
    sparams.dhkey[0] = 0;
    HTTPCli_setSecureParams(&sparams);

    建议楼主还是下载对应版本的Lwip协议例程。这样看懂怎么接受和发送数据即可。不必细究每个函数体,因为这个协议比较复杂 的

  • struct 属于结构体类名,相当于是将一整个数据打包,这样方便操作啊,typdef是对数据类型的重命名,楼主百度一下,这些用法都是有的!

  • 第一个应该是typedef struct定义过的类型,从头文件里找,肯定有它的定义,,看名字是时间格式结构体类型。第一句在这儿是一个结构体类型变量定义,放在需要的地方就好啊,,就相当于一个普通的电量定义。

    第二个同理只不过没有用typedef定义过,在头文件中。

  • 我使用的是官方的SDK和官方给的安全通道代码,为什么会显示没定义的呢?

  • 建议还是先搞明白关于结构体和函数的定义与声明,函数声明定义了,就可以在你的程序里面调用了

  • 调用子程序要在主程序前面先定义

  • 应该是结构体定义,或者说结构体进行实例化吧。 要嵌入到程序里面的话,前面的可以放在头文件。后面的可以使用一个化函数进行调用。如下,然后你就在你的程序里面调用这个init函数就可以了

    SlDateTime_t dt;
    struct HTTPCli_SecureParams sparams; // 这两个是函数声明?

    /* Set current Date to validate certificate */
    void init(void)
    {
    dt.sl_tm_day = DATE;
    dt.sl_tm_mon = MONTH;
    dt.sl_tm_year = YEAR;
    dt.sl_tm_hour = HOUR;
    dt.sl_tm_min = MINUTE;
    dt.sl_tm_sec = SECOND;
    sl_DevSet(SL_DEVICE_GENERAL_CONFIGURATION,
    SL_DEVICE_GENERAL_CONFIGURATION_DATE_TIME,
    sizeof(SlDateTime_t), (unsigned char *)(&dt));

    /* Security parameters */
    sparams.method.secureMethod = SL_SO_SEC_METHOD_TLSV1_2;
    sparams.mask.secureMask = SL_SEC_MASK_TLS_RSA_WITH_AES_256_CBC_SHA;
    strncpy(sparams.cafile, SL_SSL_CA_CERT, sizeof(SL_SSL_CA_CERT));
    sparams.privkey[0] = 0;
    sparams.cert[0] = 0;
    sparams.dhkey[0] = 0;
    HTTPCli_setSecureParams(&sparams);
    }

  • struct是C中的结构体,这里这个函数是包括了“年,月,日,时,分秒,星期”,要想调用,得先声明,定义。可以把这两段加在包含文件中。

  • 先定义,再使用!!

  • c中的使用规则无论变量或函数都是先定义再使用。

    一般在.h文件中定义相关构造类型,如结构体。共用体等类型

    在.c文件中定义相关的变量或功能函数。

    若1.c文件中定义的变量或函数需要在2.c文件中使用的话,那么在1.h中声明相对应的变量和函数,

    然后在2.c中使用#include  “1.h”即可。