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
4 w& \$ p! @5 D& VLWIP实现Socket需要操作系统的帮助,如下图所示。' ^- L" z. g1 Z; B& ~- X
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
) |" |# @# E# B; s. q+ s
(2)小端模式就是尾端为低地址(先取高地址)& u# p$ B8 [$ Q
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
. ^# v y# o, S
: f: C# X/ S) [ Y: ^
sp3pzfzoqrn64047935749.png
6 T8 P$ y O" U# z9 ?7 o3 f9 s$ P k! V6 E: j c( J
bp0ob3elcsu64047935849.png
|