0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】TCP/IP编程简述和TCP客户端demo

开发板试用精选 来源:开发板试用 作者:电子发烧友论坛 2022-11-07 13:56 次阅读
本文来源电子发烧友社区,作者:刘宇莹, 帖子地址:https://bbs.elecfans.com/jishu_2008562_1_1.html


本篇学习内容主要参考润和官方demo

https://gitee.com/hihopeorg/HarmonyOS-IoT-Application-Development
连老师TCPdemo,连老师写的是服务器,我这个就写了一个客户端
https://bbs.elecfans.com/jishu_1994928_1_1.html
包括以前在朱老师大讲堂学习网络编程相关知识,再此做个整理,感谢各位老师。

1、网络编程的框架162551izmfse75ws7mmske.png
应用层
网络服务与最终用户的一个接口
协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
表示层
数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)
格式有,JPEG、ASCll、EBCDIC、加密格式等
会话层
建立、管理、终止会话。(在五层模型里面已经合并到了应用层)
对应主机进程,指本地主机与远程主机正在进行的会话
传输层
定义传输数据的协议端口号,以及流控和差错校验。
协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层
网络层
进行逻辑地址寻址,实现不同网络之间的路径选择。
协议有:ICMP IGMP IP(IPV4 IPV6)
数据链路层
建立逻辑连接、进行硬件地址寻址、差错校验等功能。(由底层网络定义协议)
将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。
物理层
建立、维护、断开物理连接。(由底层网络定义协议)
(以上摘自百度百科 七层模型)
2、TCP 协议
(1)工作在传输层,对上服务socket接口(API),对下IP层(数据链路层)
(2)面向链接,通信前必须建立链接,需要先3次握手,也就是先拨号,QQ聊天就不是面向链接的,因为可以留言,但是视频或者打电话就必须建立链接
(3)TCP传输可靠,不拍丢包、乱序等

3、TCP协议如何保证
(1)必须先握手(三次握手建立连接,四次握手关闭连接)
(2)接收方收到数据后必应答,否则发送方会丢包重传
(3)内容附带校验
(4)根据网络带宽来自动调节适配速率(滑动窗口技术),通俗讲就是发送成功了会慢慢变快,失败了会慢慢变慢
(5)发送方会给各分割报文编号,接收方会校验编号,一旦顺序错误即会重传
以上(1)、(2)、(3)、(4)对应的是一个包内部的可靠方式 (5)是每个包之间的可靠保证。

4、socket服务器编程接口
(1)socket类似open,用来打开一个网络连接,返回一个网络文件描述符server_fd,之后网络连接的操作都通过网络文件描述符
(2)bind 把本地的IP地址和网络文件描述符(server_fd)绑定起来
(3)listen backlog监听队列长度,主要看服务器的带载能力,允许同时访问的数量
(4)accept阻塞等待,如果返回,返回客户端的sockaddr 和长度(sockaddr的长度),返回值为client_fd。之后和这个客户端的读写都通过client_fd。
(5)send/write写操作
(6)recv/read读操作
(7)close会话完成后,可以执行close关闭

5、socket服务器编程接口
(1)socket类似open,用来打开一个网络连接,返回一个网络文件描述符server_fd,之后网络连接的操作都通过网络文件描述符
(2)connect 连接目标服务器
(3)send/write写操作
(4)recv/read读操作
(5)close会话完成后,可以执行close关闭

下面是鸿蒙tcp客户端的demo

附上作者原项目源代码下载,详细见作者原帖子文章。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • wi-fi
    +关注

    关注

    14

    文章

    2106

    浏览量

    124315
  • HarmonyOS
    +关注

    关注

    79

    文章

    1967

    浏览量

    30006
  • HiSpark
    +关注

    关注

    1

    文章

    156

    浏览量

    6901
收藏 人收藏

    评论

    相关推荐

    6 GHz Wi-Fi如何助力医疗保健领域实现高级AR/VR应用

    7客户端设备:Intel Wi-Fi 7 BE200 Wi-Fi CERTIFIED 6客户端设备:Intel Wi-Fi 6E AX21
    的头像 发表于 11-08 11:40 465次阅读

    什么是socket编程 socket与tcp/ip协议的关系

    基于TCP/IP协议族,这是一组用于网络通信的协议,包括传输控制协议(TCP)和互联网协议(IP)。 Socket与TCP/
    的头像 发表于 11-01 16:01 161次阅读

    w5500 作为tcp server,客户端异常发送【RST,ACK】断开连接问题

    测试1 w5500 作为tcp server,上位机labveiw程序作为clinet,正常第二次交互结束后,客户端发送一个【RST,ACK】报文断开了连接; (1)使用wireshark抓取
    发表于 10-14 14:01

    IR900 Wi-Fi联网的配置过程

    ”接口选择Wi-Fi接口: dot11radio1类型选择:动态地址( DHCP) 如果Wi-Fi路由器没有开器DHCP,请选择类型:静态IP,填写IP/子网掩码/网关/DNS服务
    发表于 07-25 06:09

    ESP8266如何为应用程序选择正确的Wi-Fi模块吗?

    连接 4 个站点 - 接入点/软AP同时具有站点模式(使主机能够在网络上充当站点) - Zeroconf DNS服务发现 - 一次打开4个TCP和UDP协议套接字 - 一次进行 4 个客户端/服务器
    发表于 07-19 16:56

    AT模式建立TCP客户端连接一直不成功是怎么回事?

    =\"TCP\",\"192.168.0.111\",8080 ERROR CLOSED 网络调试助手软件建立 TCP 服务 端口号:8080 如果用8266建立服务,网络调试
    发表于 07-18 06:42

    如果ESP上的TCP客户端与服务器断开连接,如何启用自动重连?

    ESP - TCP 客户端 嵌入式 Linux 服务器 - TCP 服务器 如果ESP上的TCP客户端与服务器断开连接,如何启用自动重连?
    发表于 07-17 06:25

    Labview Tcp Server one to many client(TCP调试助手服务

    一直想自己做一个TCP调试助手,苦于能力有限,终于简单的功能让我给实现了,还请大家帮忙看看,指出不足,谢谢 界面未作设计,控件简单的放上去,有美工的同学可以帮忙做界面吗? 有客户端连接,ip地址
    发表于 07-14 19:56

    如何获取连接的TCP客户端的ESPCONN指针?

    我几乎阅读了 SDK API 指南版本 1.0.1 的所有文档 并开始了解如何添加用户 AT 命令。 这真的很简单,只需拨打at_cmd_array_register。 BUT! 如何获取连接的 TCP 客户端的 ESPCONN 指针?
    发表于 07-12 14:54

    STA模式下TCP客户端异常自动断开是什么原因呢?

    两个WIFI模块,一个工作在AP模式作为TCP服务器,一个工作在STA模式作为TCP客户端TCP客户端在串口出现打印信息pm open,t
    发表于 07-09 06:30

    如何同时在ESP8266上运行TCP客户端TCP服务?

    我们是 esp8266 的长期用户,并在该芯片上运行数千台家庭自动化类别的现场设备。然而,一个小小的限制阻碍了我们开发一些更有趣和创新的产品。 要求:我们需要同时运行 TCP 客户端(连接
    发表于 07-08 08:26

    求助,关于ESP32C3 TCP客户端连接断线问题求解

    ESP32C3开启AP模式做TCP服务器,手机做客户端连接服务器;超过默认最大连接数(5)以后,即使有部分客户端断开了,也无法再发起连接连接不上。一定需要服务器给客户端发送数据,确认
    发表于 06-27 07:54

    电脑TCP客户端连接开发板时LWIP出现错误怎么解决?

    开发板使用的STM32F407,UCOSII+LWIP,开发板作TCP服务器时,用电脑作TCP客户端连接,连接数在第四个时LWIP出现错误:memp_malloc: out of memory in pool NETCONN。请
    发表于 05-09 06:38

    Wi-Fi HaLow和传统Wi-Fi的区别

    Wi-Fi HaLow和传统Wi-Fi的区别  Wi-Fi是一种无线网络技术,可以连接到互联网或局域网,为用户提供无线上网的便利。随着科技的发展和互联网的普及,Wi-Fi也在不断演进和
    的头像 发表于 02-02 15:28 1107次阅读

    BT Wi-Fi模式是否可以通过ModustoolBox对套件进行编程来实现?

    尝试在 ModustoolBox 中使用示例项目对套件进行编程时,我遇到了问题,因为 " 错误:找不到匹配的 CMSIS-DAP 设备 "。 BT Wi-Fi 模式是否可以通过 Modu
    发表于 01-22 06:19