2020-10-26 12:43:20 +00:00
<!DOCTYPE html>
< html class = "writer-html5" lang = "zh" >
< head >
< meta charset = "utf-8" >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< title > 6. Http client — BL602 IoT SDK release_bl_iot_sdk_1.6.11-1-g66bb28da 文档< / title >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< link rel = "stylesheet" href = "../../_static/css/theme.css" type = "text/css" / >
< link rel = "stylesheet" href = "../../_static/pygments.css" type = "text/css" / >
< link rel = "stylesheet" href = "../../_static/style.css" type = "text/css" / >
< link rel = "stylesheet" href = "../../_static/css/custom.css" type = "text/css" / >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
<!-- [if lt IE 9]>
< script src = "../../_static/js/html5shiv.min.js" > < / script >
<![endif]-->
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< script type = "text/javascript" id = "documentation_options" data-url_root = "../../" src = "../../_static/documentation_options.js" > < / script >
< script src = "../../_static/jquery.js" > < / script >
< script src = "../../_static/underscore.js" > < / script >
< script src = "../../_static/doctools.js" > < / script >
< script src = "../../_static/language_data.js" > < / script >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< script type = "text/javascript" src = "../../_static/js/theme.js" > < / script >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< link rel = "index" title = "索引" href = "../../genindex.html" / >
< link rel = "search" title = "搜索" href = "../../search.html" / >
< link rel = "next" title = "7. Httpc client" href = "../demo_protocols_httpc/httpc.html" / >
2020-11-08 19:32:47 +00:00
< link rel = "prev" title = "5. UART_ioctl" href = "../demo_peripherals_uart_ioctl/uart_ioctl.html" / >
2020-10-26 12:43:20 +00:00
< / head >
< body class = "wy-body-for-nav" >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< div class = "wy-grid-for-nav" >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< nav data-toggle = "wy-nav-shift" class = "wy-nav-side" >
< div class = "wy-side-scroll" >
< div class = "wy-side-nav-search" >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< a href = "../../index.html" class = "icon icon-home" alt = "Documentation Home" > BL602 IoT SDK
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< / a >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< div class = "version" >
release_bl_iot_sdk_1.6.11-1-g66bb28da
< / div >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< div role = "search" >
< form id = "rtd-search-form" class = "wy-form" action = "../../search.html" method = "get" >
< input type = "text" name = "q" placeholder = "在文档中搜索" / >
< input type = "hidden" name = "check_keywords" value = "yes" / >
< input type = "hidden" name = "area" value = "default" / >
< / form >
< / div >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< / div >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< div class = "wy-menu wy-menu-vertical" data-spy = "affix" role = "navigation" aria-label = "main navigation" >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< p class = "caption" > < span class = "caption-text" > Developer_Environment< / span > < / p >
< ul >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../Developer_Environment/Developer_Environment.html" > 1. Developer Environment< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../Developer_Environment/BLFlashEnv/BLFlashEnv.html" > 2. BLFlashEnv< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../Developer_Environment/freedom_studio/freedom_studio.html" > 3. Freedom Studio< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../Developer_Environment/eclipse/eclipse.html" > 4. Eclipse< / a > < / li >
< / ul >
< p class = "caption" > < span class = "caption-text" > Examples< / span > < / p >
< ul class = "current" >
< li class = "toctree-l1" > < a class = "reference internal" href = "../helloworld/helloworld.html" > 1. Helloword< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../demo_aws/aws.html" > 2. aws< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../demo_peripherals_gpio/GPIO.html" > 3. GPIO< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../demo_peripherals_uart_echo/uart_echo.html" > 4. UART_echo< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../demo_peripherals_uart_ioctl/uart_ioctl.html" > 5. UART_ioctl< / a > < / li >
< li class = "toctree-l1 current" > < a class = "current reference internal" href = "#" > 6. Http client< / a > < ul >
< li class = "toctree-l2" > < a class = "reference internal" href = "#id1" > 6.1. 总览< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "#id2" > 6.2. 准备和使用步骤< / a > < / li >
< li class = "toctree-l2" > < a class = "reference internal" href = "#id3" > 6.3. 应用实例< / a > < / li >
< / ul >
< / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../demo_protocols_httpc/httpc.html" > 7. Httpc client< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../demo_storage_psm/psm.html" > 8. PSM< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../demo_storage_romfs/romfs.html" > 9. Romfs< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../demo_system_cli/cli.html" > 10. cli< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../demo_system_fdt/fdt.html" > 11. FDT< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../demo_wifi/wifi.html" > 12. WiFi< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../demo_ble/ble.html" > 13. BLE< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../demo_mesh/mesh.html" > 14. Mesh< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../demo_blsync_ble/blsync_ble.html" > 15. BLSYNC-BLE< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../sdk_app_easyflash_boottimes/easyflash_boottimes.html" > 16. Easyflash4 boot times< / a > < / li >
< / ul >
< p class = "caption" > < span class = "caption-text" > Components< / span > < / p >
< ul >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../Components/arch.html" > 1. arch< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../Components/Command_line/helper.html" > 2. helper< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../Components/Command_line/aos_cli.html" > 3. cli< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../Components/Hal_drv/gpio.html" > 4. GPIO< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../Components/Middleware/bloop/bloop.html" > 5. BLOOP< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../Components/Middleware/blsync/blsync.html" > 6. BLSYNC< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../Components/Middleware/dts/devicetree.html" > 7. device tree< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../Components/Middleware/log/blog.html" > 8. blog< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../Components/Middleware/security/security.html" > 9. Security< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../Components/Middleware/vfs/vfs.html" > 10. AOS VFS< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../Components/Middleware/yloop/yloop.html" > 11. yloop< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../Components/Network/httpc/httpc.html" > 12. HTTPC< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../Components/Network/https/https.html" > 13. HTTPS< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../Components/Network/tls/tls.html" > 14. TLS< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../Components/BLE/provision_WiFi/provision_WiFi.html" > 15. Provision_WiFi< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../Components/BLE/mesh/mesh.html" > 16. Mesh< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../Components/BLE/ble_stack/ble_stack.html" > 17. BLE< / a > < / li >
< / ul >
< p class = "caption" > < span class = "caption-text" > API< / span > < / p >
< ul >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../API/sys/cronalarms.html" > 1. cronalarms< / a > < / li >
< li class = "toctree-l1" > < a class = "reference internal" href = "../../API/wifi/wifi_mgmr.html" > 2. Wi-Fi Manager< / a > < / li >
< / ul >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< / div >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< / div >
< / nav >
< section data-toggle = "wy-nav-shift" class = "wy-nav-content-wrap" >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< nav class = "wy-nav-top" aria-label = "top navigation" >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< i data-toggle = "wy-nav-top" class = "fa fa-bars" > < / i >
< a href = "../../index.html" > BL602 IoT SDK< / a >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< / nav >
< div class = "wy-nav-content" >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< div class = "rst-content" >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< div role = "navigation" aria-label = "breadcrumbs navigation" >
< ul class = "wy-breadcrumbs" >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< li > < a href = "../../index.html" class = "icon icon-home" > < / a > » < / li >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< li > < span class = "section-number" > 6. < / span > Http client< / li >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< li class = "wy-breadcrumbs-aside" >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< a href = "../../_sources/Examples/demo_protocols_http/http.rst.txt" rel = "nofollow" > 查看页面源码< / a >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< / li >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< / ul >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< hr / >
< / div >
< div role = "main" class = "document" itemscope = "itemscope" itemtype = "http://schema.org/Article" >
< div itemprop = "articleBody" >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< div class = "section" id = "http-client" >
< span id = "http-index" > < / span > < h1 > < span class = "section-number" > 6. < / span > Http client< a class = "headerlink" href = "#http-client" title = "永久链接至标题" > ¶< / a > < / h1 >
< div class = "section" id = "id1" >
< h2 > < span class = "section-number" > 6.1. < / span > 总览< a class = "headerlink" href = "#id1" title = "永久链接至标题" > ¶< / a > < / h2 >
< p > 本示例主要介绍如何创建一个socket并连接到指定的Http服务器获取数据的过程。< / p >
< / div >
< div class = "section" id = "id2" >
< h2 > < span class = "section-number" > 6.2. < / span > 准备和使用步骤< a class = "headerlink" href = "#id2" title = "永久链接至标题" > ¶< / a > < / h2 >
< ul >
< li > < p > 使用之前需要准备可用的URL以及网络。< / p > < / li >
< li > < p > 使用步骤:< / p >
< ul >
< li > < p > 编译 < code class = "docutils literal notranslate" > < span class = "pre" > customer_app/sdk_app_http_client_socket< / span > < / code > 工程并下载工程;< / p > < / li >
< li > < p > 在终端输入开启wifi的命令: < code class = "docutils literal notranslate" > < span class = "pre" > stack_wifi< / span > < / code > , 输入连接wifi的命令: < code class = "docutils literal notranslate" > < span class = "pre" > wifi_sta_connect< / span > < span class = "pre" > < name> < / span > < span class = "pre" > < key> < / span > < / code > , 并确认wifi连接成功( 如输入: wifi_sta_connect bl_test_005 12345678) ; < / p >
< div class = "figure align-default" >
< img alt = "" src = "../../_images/image116.png" / >
< / div >
< div class = "figure align-default" >
< img alt = "" src = "../../_images/image214.png" / >
< / div >
< / li >
< li > < p > 使用 < code class = "docutils literal notranslate" > < span class = "pre" > http< / span > < / code > 命令通过socket的方式进行下载。< / p >
< div class = "figure align-default" >
< img alt = "" src = "../../_images/image313.png" / >
< / div >
< / li >
< / ul >
< / li >
< / ul >
< / div >
< div class = "section" id = "id3" >
< h2 > < span class = "section-number" > 6.3. < / span > 应用实例< a class = "headerlink" href = "#id3" title = "永久链接至标题" > ¶< / a > < / h2 >
< ul class = "simple" >
< li > < p > 通过 < code class = "docutils literal notranslate" > < span class = "pre" > hostname< / span > < / code > 获取 < code class = "docutils literal notranslate" > < span class = "pre" > hostinfo< / span > < / code > < / p > < / li >
< / ul >
< div class = "highlight-default notranslate" > < div class = "highlight" > < pre > < span > < / span > struct hostent *hostinfo = gethostbyname(hostname);
if (!hostinfo) {
printf(" gethostbyname Failed\r\n" );
return -1;
}
< / pre > < / div >
< / div >
< ul class = "simple" >
< li > < p > 创建一个 < code class = "docutils literal notranslate" > < span class = "pre" > socket< / span > < / code > 连接并发送http请求。< / p > < / li >
< / ul >
< div class = "highlight-default notranslate" > < div class = "highlight" > < pre > < span > < / span > < span class = "k" > if< / span > < span class = "p" > ((< / span > < span class = "n" > sockfd< / span > < span class = "o" > =< / span > < span class = "n" > socket< / span > < span class = "p" > (< / span > < span class = "n" > AF_INET< / span > < span class = "p" > ,< / span > < span class = "n" > SOCK_STREAM< / span > < span class = "p" > ,< / span > < span class = "mi" > 0< / span > < span class = "p" > ))< / span > < span class = "o" > < < / span > < span class = "mi" > 0< / span > < span class = "p" > )< / span > < span class = "p" > {< / span >
< span class = "n" > printf< / span > < span class = "p" > (< / span > < span class = "s2" > " Error in socket< / span > < span class = "se" > \r\n< / span > < span class = "s2" > " < / span > < span class = "p" > );< / span >
< span class = "k" > return< / span > < span class = "o" > -< / span > < span class = "mi" > 1< / span > < span class = "p" > ;< / span >
< span class = "p" > }< / span >
< span class = "o" > /*---< / span > < span class = "n" > Initialize< / span > < span class = "n" > server< / span > < span class = "n" > address< / span > < span class = "o" > /< / span > < span class = "n" > port< / span > < span class = "n" > struct< / span > < span class = "o" > ---*/< / span >
< span class = "n" > memset< / span > < span class = "p" > (< / span > < span class = "o" > & < / span > < span class = "n" > dest< / span > < span class = "p" > ,< / span > < span class = "mi" > 0< / span > < span class = "p" > ,< / span > < span class = "n" > sizeof< / span > < span class = "p" > (< / span > < span class = "n" > dest< / span > < span class = "p" > ));< / span >
< span class = "n" > dest< / span > < span class = "o" > .< / span > < span class = "n" > sin_family< / span > < span class = "o" > =< / span > < span class = "n" > AF_INET< / span > < span class = "p" > ;< / span >
< span class = "n" > dest< / span > < span class = "o" > .< / span > < span class = "n" > sin_port< / span > < span class = "o" > =< / span > < span class = "n" > htons< / span > < span class = "p" > (< / span > < span class = "n" > PORT< / span > < span class = "p" > );< / span >
< span class = "n" > dest< / span > < span class = "o" > .< / span > < span class = "n" > sin_addr< / span > < span class = "o" > =< / span > < span class = "o" > *< / span > < span class = "p" > ((< / span > < span class = "n" > struct< / span > < span class = "n" > in_addr< / span > < span class = "o" > *< / span > < span class = "p" > )< / span > < span class = "n" > hostinfo< / span > < span class = "o" > -> < / span > < span class = "n" > h_addr< / span > < span class = "p" > );< / span >
< span class = "o" > //< / span > < span class = "n" > char< / span > < span class = "n" > ip< / span > < span class = "p" > [< / span > < span class = "mi" > 16< / span > < span class = "p" > ];< / span >
< span class = "n" > uint32_t< / span > < span class = "n" > address< / span > < span class = "o" > =< / span > < span class = "n" > dest< / span > < span class = "o" > .< / span > < span class = "n" > sin_addr< / span > < span class = "o" > .< / span > < span class = "n" > s_addr< / span > < span class = "p" > ;< / span >
< span class = "n" > char< / span > < span class = "o" > *< / span > < span class = "n" > ip< / span > < span class = "o" > =< / span > < span class = "n" > inet_ntoa< / span > < span class = "p" > (< / span > < span class = "n" > address< / span > < span class = "p" > );< / span >
< span class = "n" > printf< / span > < span class = "p" > (< / span > < span class = "s2" > " Server ip Address : < / span > < span class = "si" > %s< / span > < span class = "se" > \r\n< / span > < span class = "s2" > " < / span > < span class = "p" > ,< / span > < span class = "n" > ip< / span > < span class = "p" > );< / span >
< span class = "o" > /*---< / span > < span class = "n" > Connect< / span > < span class = "n" > to< / span > < span class = "n" > server< / span > < span class = "o" > ---*/< / span >
< span class = "k" > if< / span > < span class = "p" > (< / span > < span class = "n" > connect< / span > < span class = "p" > (< / span > < span class = "n" > sockfd< / span > < span class = "p" > ,< / span >
< span class = "p" > (< / span > < span class = "n" > struct< / span > < span class = "n" > sockaddr< / span > < span class = "o" > *< / span > < span class = "p" > )< / span > < span class = "o" > & < / span > < span class = "n" > dest< / span > < span class = "p" > ,< / span >
< span class = "n" > sizeof< / span > < span class = "p" > (< / span > < span class = "n" > dest< / span > < span class = "p" > ))< / span > < span class = "o" > !=< / span > < span class = "mi" > 0< / span > < span class = "p" > )< / span > < span class = "p" > {< / span >
< span class = "n" > printf< / span > < span class = "p" > (< / span > < span class = "s2" > " Error in connect< / span > < span class = "se" > \r\n< / span > < span class = "s2" > " < / span > < span class = "p" > );< / span >
< span class = "k" > return< / span > < span class = "o" > -< / span > < span class = "mi" > 1< / span > < span class = "p" > ;< / span >
< span class = "p" > }< / span >
< span class = "o" > /*---< / span > < span class = "n" > Get< / span > < span class = "s2" > " Hello?" < / span > < span class = "o" > ---*/< / span >
< span class = "n" > memset< / span > < span class = "p" > (< / span > < span class = "n" > buffer< / span > < span class = "p" > ,< / span > < span class = "mi" > 0< / span > < span class = "p" > ,< / span > < span class = "n" > MAXBUF< / span > < span class = "p" > );< / span >
< span class = "n" > char< / span > < span class = "n" > wbuf< / span > < span class = "p" > []< / span >
< span class = "o" > =< / span > < span class = "s2" > " GET /ddm/ContentResource/music/204.mp3 HTTP/1.1< / span > < span class = "se" > \r\n< / span > < span class = "s2" > Host: nf.cr.dandanman.com< / span > < span class = "se" > \r\n< / span > < span class = "s2" > User-Agent: wmsdk< / span > < span class = "se" > \r\n< / span > < span class = "s2" > Accept: */*< / span > < span class = "se" > \r\n\r\n< / span > < span class = "s2" > " < / span > < span class = "p" > ;< / span >
< span class = "n" > write< / span > < span class = "p" > (< / span > < span class = "n" > sockfd< / span > < span class = "p" > ,< / span > < span class = "n" > wbuf< / span > < span class = "p" > ,< / span > < span class = "n" > sizeof< / span > < span class = "p" > (< / span > < span class = "n" > wbuf< / span > < span class = "p" > )< / span > < span class = "o" > -< / span > < span class = "mi" > 1< / span > < span class = "p" > );< / span >
< / pre > < / div >
< / div >
< ul class = "simple" >
< li > < p > 获取http响应的数据, 完成时打印获取数据花费的时间和传输的速度。< / p > < / li >
< / ul >
< div class = "highlight-default notranslate" > < div class = "highlight" > < pre > < span > < / span > < span class = "k" > while< / span > < span class = "p" > (< / span > < span class = "mi" > 1< / span > < span class = "p" > )< / span > < span class = "p" > {< / span >
< span class = "n" > ret< / span > < span class = "o" > =< / span > < span class = "n" > read< / span > < span class = "p" > (< / span > < span class = "n" > sockfd< / span > < span class = "p" > ,< / span > < span class = "n" > recv_buffer< / span > < span class = "p" > ,< / span > < span class = "n" > BUFFER_SIZE< / span > < span class = "p" > );< / span >
< span class = "k" > if< / span > < span class = "p" > (< / span > < span class = "n" > ret< / span > < span class = "o" > ==< / span > < span class = "mi" > 0< / span > < span class = "p" > )< / span > < span class = "p" > {< / span >
< span class = "n" > printf< / span > < span class = "p" > (< / span > < span class = "s2" > " eof< / span > < span class = "se" > \n\r< / span > < span class = "s2" > " < / span > < span class = "p" > );< / span >
< span class = "k" > break< / span > < span class = "p" > ;< / span >
< span class = "p" > }< / span > < span class = "k" > else< / span > < span class = "k" > if< / span > < span class = "p" > (< / span > < span class = "n" > ret< / span > < span class = "o" > < < / span > < span class = "mi" > 0< / span > < span class = "p" > )< / span > < span class = "p" > {< / span >
< span class = "n" > printf< / span > < span class = "p" > (< / span > < span class = "s2" > " ret = < / span > < span class = "si" > %d< / span > < span class = "s2" > , err = < / span > < span class = "si" > %d< / span > < span class = "se" > \n\r< / span > < span class = "s2" > " < / span > < span class = "p" > ,< / span > < span class = "n" > ret< / span > < span class = "p" > ,< / span > < span class = "n" > errno< / span > < span class = "p" > );< / span >
< span class = "k" > break< / span > < span class = "p" > ;< / span >
< span class = "p" > }< / span > < span class = "k" > else< / span > < span class = "p" > {< / span >
< span class = "n" > total< / span > < span class = "o" > +=< / span > < span class = "n" > ret< / span > < span class = "p" > ;< / span >
< span class = "o" > /*< / span > < span class = "n" > use< / span > < span class = "n" > less< / span > < span class = "n" > debug< / span > < span class = "o" > */< / span >
< span class = "k" > if< / span > < span class = "p" > (< / span > < span class = "mi" > 0< / span > < span class = "o" > ==< / span > < span class = "p" > ((< / span > < span class = "n" > debug_counter< / span > < span class = "o" > ++< / span > < span class = "p" > )< / span > < span class = "o" > & < / span > < span class = "mh" > 0xFF< / span > < span class = "p" > ))< / span > < span class = "p" > {< / span >
< span class = "n" > printf< / span > < span class = "p" > (< / span > < span class = "s2" > " total = < / span > < span class = "si" > %d< / span > < span class = "s2" > , ret = < / span > < span class = "si" > %d< / span > < span class = "se" > \n\r< / span > < span class = "s2" > " < / span > < span class = "p" > ,< / span > < span class = "n" > total< / span > < span class = "p" > ,< / span > < span class = "n" > ret< / span > < span class = "p" > );< / span >
< span class = "p" > }< / span >
< span class = "o" > //< / span > < span class = "n" > vTaskDelay< / span > < span class = "p" > (< / span > < span class = "mi" > 2< / span > < span class = "p" > );< / span >
< span class = "k" > if< / span > < span class = "p" > (< / span > < span class = "n" > total< / span > < span class = "o" > > < / span > < span class = "mi" > 82050000< / span > < span class = "p" > )< / span > < span class = "p" > {< / span >
< span class = "n" > ticks_end< / span > < span class = "o" > =< / span > < span class = "n" > xTaskGetTickCount< / span > < span class = "p" > ();< / span >
< span class = "n" > time_consumed< / span > < span class = "o" > =< / span > < span class = "p" > ((< / span > < span class = "n" > uint32_t< / span > < span class = "p" > )(((< / span > < span class = "n" > int32_t< / span > < span class = "p" > )< / span > < span class = "n" > ticks_end< / span > < span class = "p" > )< / span > < span class = "o" > -< / span > < span class = "p" > ((< / span > < span class = "n" > int32_t< / span > < span class = "p" > )< / span > < span class = "n" > ticks_start< / span > < span class = "p" > )))< / span > < span class = "o" > /< / span > < span class = "mi" > 1000< / span > < span class = "p" > ;< / span >
< span class = "n" > printf< / span > < span class = "p" > (< / span > < span class = "s2" > " Download comlete, total time < / span > < span class = "si" > %u< / span > < span class = "s2" > s, speed < / span > < span class = "si" > %u< / span > < span class = "s2" > Kbps< / span > < span class = "se" > \r\n< / span > < span class = "s2" > " < / span > < span class = "p" > ,< / span >
< span class = "p" > (< / span > < span class = "n" > unsigned< / span > < span class = "nb" > int< / span > < span class = "p" > )< / span > < span class = "n" > time_consumed< / span > < span class = "p" > ,< / span >
< span class = "p" > (< / span > < span class = "n" > unsigned< / span > < span class = "nb" > int< / span > < span class = "p" > )(< / span > < span class = "n" > total< / span > < span class = "o" > /< / span > < span class = "n" > time_consumed< / span > < span class = "o" > *< / span > < span class = "mi" > 8< / span > < span class = "o" > /< / span > < span class = "mi" > 1000< / span > < span class = "p" > )< / span >
< span class = "p" > );< / span >
< span class = "k" > break< / span > < span class = "p" > ;< / span >
< span class = "p" > }< / span >
< span class = "p" > }< / span >
< / pre > < / div >
< / div >
< ul class = "simple" >
< li > < p > 关闭 < code class = "docutils literal notranslate" > < span class = "pre" > socket< / span > < / code > 。< / p > < / li >
< / ul >
< div class = "highlight-default notranslate" > < div class = "highlight" > < pre > < span > < / span > < span class = "n" > close< / span > < span class = "p" > (< / span > < span class = "n" > sockfd< / span > < span class = "p" > );< / span >
< / pre > < / div >
< / div >
< ul class = "simple" >
< li > < p > 在 < code class = "docutils literal notranslate" > < span class = "pre" > customer_app/sdk_app_http_client_socket/sdk_app_http_client_socket/demo.c< / span > < / code > 中 < code class = "docutils literal notranslate" > < span class = "pre" > static< / span > < span class = "pre" > void< / span > < span class = "pre" > _cli_init()< / span > < / code > 的函数里调用 < code class = "docutils literal notranslate" > < span class = "pre" > http_client_cli_init()< / span > < / code > 初始化http命令< / p > < / li >
< / ul >
< / div >
< / div >
< / div >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< / div >
< footer >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< div class = "rst-footer-buttons" role = "navigation" aria-label = "footer navigation" >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< a href = "../demo_protocols_httpc/httpc.html" class = "btn btn-neutral float-right" title = "7. Httpc client" accesskey = "n" rel = "next" > 下一页 < span class = "fa fa-arrow-circle-right" > < / span > < / a >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< a href = "../demo_peripherals_uart_ioctl/uart_ioctl.html" class = "btn btn-neutral float-left" title = "5. UART_ioctl" accesskey = "p" rel = "prev" > < span class = "fa fa-arrow-circle-left" > < / span > 上一页< / a >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< / div >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< hr / >
< div role = "contentinfo" >
< p >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
© 版权所有 2020, Bouffalo Lab
< / p >
< / div >
2020-11-08 19:32:47 +00:00
利用 < a href = "http://sphinx-doc.org/" > Sphinx< / a > 构建,使用了
2020-10-26 12:43:20 +00:00
< a href = "https://github.com/rtfd/sphinx_rtd_theme" > 主题< / a >
2020-11-08 19:32:47 +00:00
由 < a href = "https://readthedocs.org" > Read the Docs< / a > 开发.
2020-10-26 12:43:20 +00:00
< / footer >
< / div >
< / div >
< / section >
< / div >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< script type = "text/javascript" >
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
< / script >
2020-11-08 19:32:47 +00:00
2020-10-26 12:43:20 +00:00
< / body >
< / html >