一,基础概念在我看来Socket就相当于API,就是函数接口,我们使用Socket就可以在不清楚底层原理的基础上进行通信,即Socket会帮助我们处理好网络的Ip地址等。下图就清晰地展示了Socket的位置,作为用户层与其他层的交互媒介。
LWIP实现Socket需要操作系统的帮助,如下图所示。
二,Socket编程的基础知识
1.大端模式,小端模式
(1)大端模式就是尾端为高地址(先取低地址)
(2)小端模式就是尾端为低地址(先取高地址)
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)
-
物联网
+关注
关注
2903文章
44240浏览量
371024 -
编程
+关注
关注
88文章
3587浏览量
93578 -
LwIP
+关注
关注
2文章
85浏览量
27082
发布评论请先 登录
相关推荐
评论