电子产业一站式赋能平台

PCB联盟网

搜索
查看: 48|回复: 0
收起左侧

物联网LWIP之socket编程

[复制链接]

395

主题

395

帖子

2304

积分

三级会员

Rank: 3Rank: 3

积分
2304
发表于 2024-1-17 21:06:00 | 显示全部楼层 |阅读模式

mmluq33txnp64047935148.png

mmluq33txnp64047935148.png

% B  W8 B0 W; S8 f/ l7 w1 S1 l+ j
' W. b, _0 m0 q6 P7 R+ F+ ~% t2 ]一,基础概念在我看来Socket就相当于API,就是函数接口,我们使用Socket就可以在不清楚底层原理的基础上进行通信,即Socket会帮助我们处理好网络的Ip地址等。下图就清晰地展示了Socket的位置,作为用户层与其他层的交互媒介。+ L1 P1 ~+ h0 ^! T) F& s4 A- H

ackws1z5hm064047935248.png

ackws1z5hm064047935248.png

4 w& \$ p! @5 D& VLWIP实现Socket需要操作系统的帮助,如下图所示。' ^- L" z. g1 Z; B& ~- X

jhuiy5c3pyc64047935349.png

jhuiy5c3pyc64047935349.png

+ r- E5 N) Q3 J- C2 | 二,Socket编程的基础知识# L) P# r2 }- K) G: O  o
1.大端模式,小端模式* ]0 w. _2 l" q3 t+ O
(1)大端模式就是尾端为高地址(先取低地址) , s, ]; K9 n+ |# @  R7 s# b

jh3sgotkegg64047935449.png

jh3sgotkegg64047935449.png
) |" |# @# E# B; s. q+ s
(2)小端模式就是尾端为低地址(先取高地址)& u# p$ B8 [$ Q

4rlsd1425rb64047935549.png

4rlsd1425rb64047935549.png

* ^& k- Y1 g. M" w9 s" b3 J
! p7 K3 f, M% B. \1 [1 {2.地址转换接口
5 `- e$ Q% a5 O3 Q1 D* OSocket编程中会有特定的函数来处理IP地址,我们用户可以直接省略判断ip地址是大端还是小端,这个转换接口会自己判断地址存储方式并转换。
  • 1.htonl与htons区别《大小端》host —— to —— net——l :主机字节变为网络字节,字节为大端模式host —— to —— net——s :主机字节变为网络字节,字节为小端模式
    4 z' ~' Y6 q) C8 n% |6 P2.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地址转换$ P/ K3 v, |, n7 _3 P0 G
    (1)socket接口# m6 X  ~) X9 E, J+ `7 C3 @
  • //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接口
    4 \5 m- \; Y1 Z) M! \
  • //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)
    # a9 K3 e! {" K2 }==========
    3 ^" A5 m$ _: I* N0 L3 J) _往期回顾:国产芯片GD32与国产以太网芯片的坑  a$ O' o  }( S6 \% C; P
    【蓝桥杯更新通知】
    * U9 B8 |9 Q# y$ y( S& `传输距离达到1500米的485电路
    ' A; E* F6 K6 e9 X  U( q4 K7 @! l- O结构体与指针的关系
    6 y* [/ n' C/ r* p琢磨了一天的CAN协议
    1 ^8 E3 b7 l! `/ W' U==========作者:m0_61659911
    : A- ?% o( y* i- o, k! {+ N平台:CSDN# a5 J+ {- s8 H+ |# W  x
    链接:点击阅读原文8 q0 D7 X/ K) K4 l' _) m5 A

    qppa23u0tl464047935649.png

    qppa23u0tl464047935649.png
    . ^# v  y# o, S

    : f: C# X/ S) [  Y: ^

    sp3pzfzoqrn64047935749.png

    sp3pzfzoqrn64047935749.png

    6 T8 P$ y  O" U# z9 ?7 o3 f9 s$ P  k! V6 E: j  c( J

    bp0ob3elcsu64047935849.png

    bp0ob3elcsu64047935849.png
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表