一,基礎(chǔ)概念在我看來(lái)Socket就相當(dāng)于API,就是函數(shù)接口,我們使用Socket就可以在不清楚底層原理的基礎(chǔ)上進(jìn)行通信,即Socket會(huì)幫助我們處理好網(wǎng)絡(luò)的Ip地址等。下圖就清晰地展示了Socket的位置,作為用戶層與其他層的交互媒介。

LWIP實(shí)現(xiàn)Socket需要操作系統(tǒng)的幫助,如下圖所示。

二,Socket編程的基礎(chǔ)知識(shí)
1.大端模式,小端模式
(1)大端模式就是尾端為高地址(先取低地址)

(2)小端模式就是尾端為低地址(先取高地址)

2.地址轉(zhuǎn)換接口
Socket編程中會(huì)有特定的函數(shù)來(lái)處理IP地址,我們用戶可以直接省略判斷ip地址是大端還是小端,這個(gè)轉(zhuǎn)換接口會(huì)自己判斷地址存儲(chǔ)方式并轉(zhuǎn)換。
1.htonl與htons區(qū)別《大小端》host —— to —— net——l :主機(jī)字節(jié)變?yōu)榫W(wǎng)絡(luò)字節(jié),字節(jié)為大端模式host —— to —— net——s :主機(jī)字節(jié)變?yōu)榫W(wǎng)絡(luò)字節(jié),字節(jié)為小端模式
2.htonl與ntohl區(qū)別《主轉(zhuǎn)網(wǎng),網(wǎng)轉(zhuǎn)主》u_long b = htonl(a);//將主機(jī)字節(jié)的unsigned long轉(zhuǎn)為網(wǎng)絡(luò)字節(jié)順序(32位)u_long b = ntohl(a);//將網(wǎng)絡(luò)字節(jié)順序(32位)轉(zhuǎn)為主機(jī)字節(jié)//def.h 地址轉(zhuǎn)換接口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地址轉(zhuǎn)換
(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)
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2945文章
47818瀏覽量
414831 -
編程
+關(guān)注
關(guān)注
90文章
3716瀏覽量
97178 -
LwIP
+關(guān)注
關(guān)注
2文章
90瀏覽量
29568
發(fā)布評(píng)論請(qǐng)先 登錄
TCP/IP(Socket)協(xié)議深度剖析
socket是什么
Lora基站在物聯(lián)網(wǎng)應(yīng)用的重要性
學(xué)習(xí)物聯(lián)網(wǎng)怎么入門?
學(xué)習(xí)物聯(lián)網(wǎng)可以做什么工作?
GraniStudio : TCP/IP(Socket)協(xié)議深度剖析
物聯(lián)網(wǎng)藍(lán)牙模塊有哪些優(yōu)勢(shì)?
PLC數(shù)據(jù)采集之全自動(dòng)薄膜橫切機(jī)物聯(lián)網(wǎng)解決方案
物聯(lián)網(wǎng)的應(yīng)用范圍有哪些?
物聯(lián)網(wǎng)未來(lái)發(fā)展趨勢(shì)如何?
物聯(lián)網(wǎng)工程師為什么要學(xué)Linux?
智多晶LWIP網(wǎng)絡(luò)通信系統(tǒng)介紹
物聯(lián)網(wǎng)LWIP之socket編程
評(píng)論