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

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

3天内不再提示

物联网LWIP之socket编程

撞上电子 2024-01-18 08:00 次阅读

一,基础概念在我看来Socket就相当于API,就是函数接口,我们使用Socket就可以在不清楚底层原理的基础上进行通信,即Socket会帮助我们处理好网络的Ip地址等。下图就清晰地展示了Socket的位置,作为用户层与其他层的交互媒介。

a5be4792-b594-11ee-aa22-92fbcf53809c.png

LWIP实现Socket需要操作系统的帮助,如下图所示。

a5c23e38-b594-11ee-aa22-92fbcf53809c.png

二,Socket编程的基础知识

1.大端模式,小端模式

(1)大端模式就是尾端为高地址(先取低地址)

a5d9f3d4-b594-11ee-aa22-92fbcf53809c.png

(2)小端模式就是尾端为低地址(先取高地址)

a5de32c8-b594-11ee-aa22-92fbcf53809c.png

2.地址转换接口

Socket编程中会有特定的函数来处理IP地址,我们用户可以直接省略判断ip地址是大端还是小端,这个转换接口会自己判断地址存储方式并转换。

1.htonl与htons区别《大小端》host —— to —— net——l :主机字节变为网络字节,字节为大端模式host —— to —— net——s :主机字节变为网络字节,字节为小端模式
2.htonl与ntohl区别《主转网,网转主》u_long b = htonl(a);//将主机字节的unsigned long转为网络字节顺序(32位)u_long b = ntohl(a);//将网络字节顺序(32位)转为主机字节//def.h 地址转换接口uint32_t htonl(uint32_t hostlong);uint16_t htons(uint16_t hostshort);uint32_t ntohl(uint32_t netlong);uint16_t ntohs(uint16_t netshort);

3.IP地址转换

(1)socket接口

//socket.hint inet_pton(int af, const char *src, void *dst);const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);

(2)LWIP接口

//inet.h#define inet_addr(cp) ipaddr_addr(cp)#define inet_aton(cp, addr) ip4addr_aton(cp, (ip4_addr_t*)addr)#define inet_ntoa(addr) ip4addr_ntoa((const ip4_addr_t*)&(addr))#define inet_ntoa_r(addr, buf, buflen) ip4addr_ntoa_r((const ip4_addr_t*)&(addr), buf, buflen)

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

    关注

    2870

    文章

    41639

    浏览量

    358410
  • 编程
    +关注

    关注

    88

    文章

    3441

    浏览量

    92406
  • LwIP
    +关注

    关注

    1

    文章

    82

    浏览量

    26620
收藏 人收藏

    评论

    相关推荐

    STM32H743ZIT6调试FreeRTOS + LWIP,有什么办法能将socket设置为非堵塞方式?

    大家好, 我们现在用STM32H743ZIT6,在调试FreeRTOS + LWIP,发现SOCKET为堵塞方式,有什么办法能将socket设置为非堵塞方式?用setsockopt函数设置,已经测试过了,不起作用;大神们帮看下,
    发表于 04-26 08:14

    使用FreeRTOS+LwIP+emWin,LwIP使用socket-udp功能,收发数据丢包非常严重是怎么回事啊?

    请教下使用FreeRTOS+LwIP+emWin,LwIP使用socket-udp功能,收发数据丢包非常非常严重,是怎么回事啊 ? 单片机使用 F7x 相关宏定义如下: #define
    发表于 04-24 07:28

    使用lwip socket udp功能,开发板为客户端时不能够接收服务器端发送过来的数据 ?

    请教下,使用 lwip socket udp 功能,开发板为客户端时不能够接收服务器端发送过来的数据 ? 1,如果开发板为 服务器端,收发都可以 2,如果开发板为 客户端,不能够接收服务器端发送
    发表于 04-16 06:01

    lwip开发板联网ping不通是怎么回事?

    求大佬帮助!eth外设的lwip功能联网测试,发现电脑与开发版直连的时候通讯没有问题,而且TCP和UDP测试没有问题,但是电脑和开发版通过外部路由器连接时,开发板PING不通
    发表于 04-03 06:51

    lwip可以开几个socket

    的内存和处理器资源,以适应资源受限的嵌入式应用场景。 在lwIP中,socket是一种用于进行网络通信的抽象概念。它提供了一种简化的编程接口,使得应用程序可以通过网络发送和接收数据。lwIP
    的头像 发表于 01-09 14:05 612次阅读

    常见的socket三种类型

    常见的socket三种类型  Socket是计算机网络中常用的通信机制,在网络编程中起到了非常重要的作用。Socket可以分为三种类型:流套接字(Stream
    的头像 发表于 12-08 11:18 1726次阅读

    rt-thread源码分析之socket抽象层和网卡注册

    如图所示,rt-thread的网络分为应用层、sal_socket、netdev、协议簇(at、lwip、wiznet)、网卡驱动五层。
    的头像 发表于 11-13 12:43 399次阅读

    socket、端口、进程的关系

    特定的TCP端口。 而 socket 呢,是网络编程中的概念,对TCP/IP协议进行了抽象和实现,并为应用层提供接口。这里的应用A,可以是FTP应用,它属于用户进程,通过socket与内核中的网络协议栈进行交互。
    的头像 发表于 11-10 15:02 276次阅读
    <b class='flag-5'>socket</b>、端口、进程的关系

    Socket 网络编程框架介绍

    Socket 网络编程框架 Socket(套接字)是一个网络编程概念,描述了一个通信端点(Endpoint),用于建立网络连接(Connection)并传输数据。 Linux Kern
    的头像 发表于 11-09 14:19 349次阅读
    <b class='flag-5'>Socket</b> 网络<b class='flag-5'>编程</b>框架介绍

    联网专业前景怎么样?

    联网专业前景怎么样? 联网专业在当今技术发展迅速的背景下具有广阔的前景。以下是联网专业的
    发表于 10-20 09:48

    基于飞腾派的边缘联网

    本帖最后由 zhh763984017 于 2023-9-21 16:53 编辑 今天给大家分享一个飞腾派的一个应用场景——边缘联网关。边缘联网关可以连接各种
    发表于 09-21 16:50

    电池联网应用MCU都用哪些型号的?

    电池联网应用MCU都用哪些型号的
    发表于 09-20 07:57

    联网简介

    联网(IoT)是由物理设备、车辆等组成的网络,家用电器和嵌入有电子设备、软件、传感器等的其他物品,致动器,以及使这些物体能够连接和交换数据。
    发表于 09-11 07:18

    用telnet组件提示bind socket failed是什么原因?

    可能是什么原因导致bind不成呢?还有,我用的联网卡,像10开头的这种大内网地址,是不是不能直接这么telnet?多谢了。。。。
    发表于 05-11 10:08

    中文C语言编程玩转联网华为鸿蒙Hi3861开发-基础案例合集

    继《一套支持中文C语言编程的鸿蒙Hi3861智能硬件开发套件》发布后,中文C语言编程玩转联网华为鸿蒙Hi3861开发,多个基础案例视频,包括交通红绿灯、数码管、光电开关、手指侦测心率
    发表于 05-08 23:50