在我看来,Socket的基本概念相当于API,是函数接口,我们可以在不知道底层原理的基础上使用Socket通信,即使Socket会帮助我们处理它网络IP地址等。Socket的位置在下图中清晰地显示,作为用户层和其他层的互动媒介。

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)