一,基礎概念在我看來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)
-
物聯網
+關注
關注
2914文章
44938瀏覽量
377078 -
編程
+關注
關注
88文章
3637瀏覽量
93988 -
LwIP
+關注
關注
2文章
88瀏覽量
27371
發布評論請先 登錄
相關推薦
socket 和 UDP 協議的對比
socket 在物聯網中的應用
socket 多線程編程實現方法
socket 編程基礎入門
socket在物聯網中的應用案例
socket編程中的阻塞與非阻塞
什么是socket編程 socket與tcp/ip協議的關系
物聯網4G CAT1產品的Socket通訊研發測試方案
![<b class='flag-5'>物</b><b class='flag-5'>聯網</b>4G CAT1產品的<b class='flag-5'>Socket</b>通訊研發測試方案](https://file1.elecfans.com//web2/M00/08/A0/wKgZomb5HCiAawHwAA5fvPWO62M370.jpg)
簡述socket編程中的常用函數
如何理解socket編程接口
RTOS SDK中的socket怎么正確使用?
基于MM32F5270的Ethernet實現LwIP協議棧移植
![基于MM32F5270的Ethernet實現<b class='flag-5'>LwIP</b>協議棧移植](https://file1.elecfans.com/web2/M00/F2/4C/wKgaomZ05aiAd7a_AAAxqH8z314231.png)
評論