lwip中TCP和UDP的API有哪些

這篇文章給大家分享的是有關(guān)lwip中TCP和UDP的API有哪些的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

成都創(chuàng)新互聯(lián)公司自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元丹棱做網(wǎng)站,已為上家服務(wù),為丹棱各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792

01、TCP相關(guān)API

1、tcp_arg()

該函數(shù)用于傳遞給應(yīng)用程序的具體狀態(tài),在控制塊標(biāo)志建立以后調(diào)用,即在函數(shù)tcp_new()調(diào)用之后才能調(diào)用

功能

指定應(yīng)該傳遞給所有回調(diào)函數(shù)的應(yīng)用程序的具體狀態(tài)

原型

void tcp_arg(struct tcp_pcb *pcb, void *arg)

參數(shù)

pcb:當(dāng)前TCP連接的控制塊

arg: 需要傳遞給回調(diào)函數(shù)的參數(shù)

返回

無(wú)

2、tcp_new()

該函數(shù)在定義一個(gè)tcp_pcb控制塊后應(yīng)該首先被調(diào)用,以建立該控制塊的連接標(biāo)志

功能

建立一個(gè)新的連接標(biāo)志(pcb)

原型

struct tcp_pcb *tcp_new(void)

參數(shù)

無(wú)

返回

pcb: 正常建立了連接標(biāo)志,返回建立的pcb

NULL:新的pcb內(nèi)存不可用時(shí)

3、tcp_bind()

該函數(shù)用戶綁定本地的IP地址和端口號(hào),用戶可以將其綁定在一個(gè)任意的本地IP地址上,它也只能在函數(shù)tcp_new()調(diào)用之后才能調(diào)用

功能

綁定本地IP地址和端口號(hào)

原型

err_t tcp_bind (struct tcp_pcb *pcb, struct ip_addr *ipaddr, u16_t port)

參數(shù)

pcb: 準(zhǔn)備綁定的連接,類似于BSD標(biāo)準(zhǔn)中的Sockets

ipaddr:綁定的IP地址。如果為IP_ADDR_ANY,則將連接綁定到所有的本地IP地址上

port: 綁定的本地端口號(hào)。注意:千萬(wàn)不要和其它的應(yīng)用程序產(chǎn)生沖突

返回

ERR_OK:正確地綁定了指定的連接

ERR_USE: 指定的端口號(hào)已經(jīng)綁定了一個(gè)連接,產(chǎn)生了沖突

4、tcp_listen()

當(dāng)一個(gè)正在請(qǐng)求的連接被接收時(shí),由tcp_accept()函數(shù)指定的回調(diào)函數(shù)將會(huì)被調(diào)用。當(dāng)然,在調(diào)用本函數(shù)前,必須首先調(diào)用函數(shù)tcp_bind()來(lái)綁定一個(gè)本地的IP地址和端口號(hào)

功能

使指定的連接開始進(jìn)入監(jiān)聽狀態(tài)

原型

struct tcp_pcb *tcp_listen (struct tcp_pcb *pcb)

參數(shù)

pcb:指定將要進(jìn)入監(jiān)聽狀態(tài)的連接

返回

pcb: 返回一個(gè)新的連接標(biāo)志pcb,它作為一個(gè)參數(shù)傳遞給將要被分派的函數(shù)。這樣做的原

因是處于監(jiān)聽狀態(tài)的連接一般只需要較小的內(nèi)存,于是函數(shù)tcp_listen()就會(huì)收回原始連接

的內(nèi)存,而重新分配一個(gè)較小內(nèi)存塊供處于監(jiān)聽狀態(tài)的連接使用。

NULL: 監(jiān)聽狀態(tài)的連接的內(nèi)存塊不可用時(shí),返回NULL。如果這樣的話,作為參數(shù)傳遞給

函數(shù)tcp_listen()的pcb所占用的內(nèi)存將不能夠被分配。

5、tcp_listen_with_backlog()

該函數(shù)同tcp_listen()一樣,但是該函數(shù)將限制在監(jiān)聽隊(duì)列中未處理的連接的數(shù)量,這是通過(guò)參數(shù)backlog來(lái)實(shí)現(xiàn)的。要使用該函數(shù),需要在配置文件lwipopts.h中設(shè)置TCP_LISTEN_BACKLOG=1。

功能

使指定的連接開始進(jìn)入監(jiān)聽狀態(tài),但將會(huì)限制監(jiān)聽隊(duì)列中連接的數(shù)量

原型

struct tcp_pcb *tcp_listen_with_backlog(struct tcp_pcb *pcb, u8_t backlog)

參數(shù)

pcb: 指定將要進(jìn)入監(jiān)聽狀態(tài)的連接

backlog: 限制監(jiān)聽隊(duì)列中連接的數(shù)量

返回

pcb: 返回一個(gè)新的連接標(biāo)志pcb,它作為一個(gè)參數(shù)傳遞給將要被分派的函數(shù)。這樣做的原

因是處于監(jiān)聽狀態(tài)的連接一般只需要較小的內(nèi)存,于是函數(shù)tcp_listen()就會(huì)收回原始

連接的內(nèi)存,而重新分配一個(gè)較小內(nèi)存塊供處于監(jiān)聽狀態(tài)的連接使用。

NULL: 監(jiān)聽狀態(tài)的連接的內(nèi)存塊不可用時(shí),返回NULL。如果這樣的話,作為參數(shù)傳遞

給函數(shù)tcp_listen()的pcb所占用的內(nèi)存將不能夠被分配。

6、tcp_accepted()

這個(gè)函數(shù)通常在“accept”的回調(diào)函數(shù)中被調(diào)用。它允許LwIP去執(zhí)行一些內(nèi)務(wù)工作,例如,將新來(lái)的連接放入到監(jiān)聽隊(duì)列中,以等待處理。

功能

通知LwIP一個(gè)新來(lái)的連接已經(jīng)被接收

原型

void tcp_accepted(struct tcp_pcb *pcb)

參數(shù)

pcb: 已經(jīng)被接收的連接

返回

無(wú)

7、tcp_accept()

當(dāng)處于監(jiān)聽的連接與一個(gè)新來(lái)的連接連接上后,該函數(shù)指定的回調(diào)函數(shù)將被調(diào)用。通常在tcp_listen()函數(shù)調(diào)用之后調(diào)用。

功能

指定處于監(jiān)聽狀態(tài)的連接接通后將要調(diào)用的回調(diào)函數(shù)

原型

void tcp_accept(struct tcp_pcb *pcb,

err_t (* accept)(void *arg,

struct tcp_pcb *newpcb,

err_t err))

參數(shù)

pcb:指定一個(gè)處于監(jiān)聽狀態(tài)的連接

accept:指定連接接通后將要調(diào)用的回調(diào)函數(shù)

返回

無(wú)

8、tcp_connect()

請(qǐng)求參數(shù)pcb指定的連接連接到遠(yuǎn)程主機(jī),并發(fā)送打開連接的最初的SYN段。函數(shù)tcp_connect()調(diào)用后立即返回,它并不會(huì)等待連接一定要正確建立。如果當(dāng)連接正確建立,那么它會(huì)直接調(diào)用第四個(gè)參數(shù)指定的函數(shù)(connected參數(shù))。相反地,如果連接不能夠被正確建立,這原因可能是遠(yuǎn)程主機(jī)拒絕連接,也可能是遠(yuǎn)程主機(jī)不應(yīng)答,無(wú)論是什么原因,都會(huì)調(diào)用connected函數(shù)來(lái)設(shè)置相應(yīng)的參數(shù)err

功能

請(qǐng)求指定的連接連接到遠(yuǎn)程主機(jī),并發(fā)送打開連接的最初的SYN段

原型

err_t tcp_connect(struct tcp_pcb *pcb,

struct ip_addr *ipaddr,

u16_t port,

err_t (* connected)(void *arg,

struct tcp_pcb *tpcb,

err_t err))

參數(shù)

pcb:指定一個(gè)連接(pcb)

ipaddr: 指定連接遠(yuǎn)程主機(jī)的IP地址

port: 指定連接遠(yuǎn)程主機(jī)的端口號(hào)

connected:指定連接正確建立后調(diào)用的回調(diào)函數(shù)

返回

ERR_MEM:當(dāng)訪問(wèn)SYN段的內(nèi)存不可用時(shí),即連接沒有成功建立

ERR_OK: 當(dāng)SYN被正確地訪問(wèn)時(shí),即連接成功建立

9、tcp_write()

該函數(shù)功能是發(fā)送TCP數(shù)據(jù),但是并不是一經(jīng)調(diào)用,就立即發(fā)送數(shù)據(jù),而是將指定的數(shù)據(jù)放入到發(fā)送隊(duì)列,由協(xié)議內(nèi)核來(lái)決定發(fā)送。發(fā)送隊(duì)列中可用字節(jié)的大小可以通過(guò)函數(shù)tcp_sndbuf()來(lái)重新獲得。使用這個(gè)函數(shù)的一個(gè)比較恰當(dāng)?shù)姆椒ㄊ且院瘮?shù)tcp_sndbuf()返回的字節(jié)大小來(lái)發(fā)送數(shù)據(jù)。如果函數(shù)返回ERR_MEM,則應(yīng)用程序就等待一會(huì),直到當(dāng)前發(fā)送隊(duì)列中的數(shù)據(jù)被遠(yuǎn)程主機(jī)成功地接收,然后在嘗試發(fā)送下一個(gè)數(shù)據(jù)

功能

發(fā)送TCP數(shù)據(jù)

原型

err_t tcp_write(struct tcp_pcb *pcb,

void *dataptr,

u16_t len,

u8_t copy)

參數(shù)

pcb:指定所要發(fā)送的連接(pcb)

dataptr:是一個(gè)指針,它指向準(zhǔn)備發(fā)送的數(shù)據(jù)

len: 指定要發(fā)送數(shù)據(jù)的長(zhǎng)度

copy: 這是一個(gè)邏輯變量,它為0或者1,它指定是否分配新的內(nèi)存空間,而把要發(fā)送的數(shù)

據(jù)復(fù)制進(jìn)去。如果該參數(shù)為0,則不會(huì)為發(fā)送的數(shù)據(jù)分配新的內(nèi)存空間,因而對(duì)發(fā)送

數(shù)據(jù)的訪問(wèn)只能通過(guò)指定的指針

返回

ERR_MEM:如果數(shù)據(jù)的長(zhǎng)度超過(guò)了當(dāng)前發(fā)送數(shù)據(jù)緩沖區(qū)的大小或者將要發(fā)送的段隊(duì)列的

長(zhǎng)度超過(guò)了文件lwipopts.h中定義的上限(即最大值),則函數(shù)tcp_write()調(diào)用失

敗,返回ERR_MEM

ERR_OK:數(shù)據(jù)被正確地放入到發(fā)送隊(duì)列中,返回ERR_OK

10、tcp_sent()

該函數(shù)用于設(shè)定遠(yuǎn)程主機(jī)成功接收到數(shù)據(jù)后調(diào)用的回調(diào)函數(shù),通常也在函數(shù)tcp_listen()之后調(diào)用。

功能

指定當(dāng)遠(yuǎn)程主機(jī)成功地接收到數(shù)據(jù)后,應(yīng)用程序調(diào)用的回調(diào)函數(shù)

原型

void tcp_sent(struct tcp_pcb *pcb,

err_t (* sent)(void *arg,

struct tcp_pcb *tpcb,

u16_t len))

參數(shù)

pcb: 指定一個(gè)與遠(yuǎn)程主機(jī)相連接的連接(pcb)

sent: 指定遠(yuǎn)程主機(jī)成功地接收到數(shù)據(jù)后調(diào)用的回調(diào)函數(shù)?!發(fā)en”作為參數(shù)傳遞給回調(diào)函數(shù),

給出上一次已經(jīng)被確認(rèn)的發(fā)送的最大字節(jié)數(shù)。

返回

無(wú)

11、tcp_recv()

該函數(shù)用于指定當(dāng)有新的數(shù)據(jù)接收到時(shí)調(diào)用的回調(diào)函數(shù),通常在函數(shù)tcp_accept()指定的回調(diào)函數(shù)中調(diào)用。

功能

指定當(dāng)新的數(shù)據(jù)接收到時(shí)調(diào)用的回調(diào)函數(shù)

原型

void tcp_recv (struct tcp_pcb *pcb,

err_t (* recv)(void *arg,

struct tcp_pcb *tpcb,

struct pbuf *p,

err_t err))

參數(shù)

pcb: 指定一個(gè)與遠(yuǎn)程主機(jī)相連接的連接(pcb)

recv: 指定當(dāng)新的數(shù)據(jù)接收到時(shí)調(diào)用的回調(diào)函數(shù)。該回調(diào)函數(shù)可以通過(guò)傳遞一個(gè)NULL的

pbuf結(jié)構(gòu)用來(lái)指示遠(yuǎn)程主機(jī)已經(jīng)關(guān)閉連接。如果沒有錯(cuò)誤發(fā)生,則回調(diào)函數(shù)返回

ERR_OK,并且必須釋放掉pbuf結(jié)構(gòu)。否則,如果函數(shù)的調(diào)用中發(fā)生錯(cuò)誤,那么千

萬(wàn)不要釋放該結(jié)構(gòu),以便LwIP內(nèi)核可以保存該結(jié)構(gòu),從而等待以后處理。

返回

無(wú)

12、tcp_recved()

當(dāng)應(yīng)用程序接收到數(shù)據(jù)的時(shí)候該函數(shù)必須被調(diào)用,用于獲取接收到的數(shù)據(jù)的長(zhǎng)度,即該函數(shù)應(yīng)該在函數(shù)tcp_recv()指定的回調(diào)函數(shù)中調(diào)用。

功能

獲取接收到的數(shù)據(jù)的長(zhǎng)度

原型

void tcp_recved(struct tcp_pcb *pcb, u16_t len)

參數(shù)

pcb: 指定一個(gè)與遠(yuǎn)程主機(jī)相連接的連接(pcb)

len:獲取接收到的數(shù)據(jù)的長(zhǎng)度

返回

無(wú)

13、tcp_poll()

當(dāng)使用LwIP的輪詢功能時(shí)必須調(diào)用該函數(shù),用于指定輪詢的時(shí)間間隔及輪詢時(shí)應(yīng)該調(diào)用的回調(diào)函數(shù)

功能

指定輪詢的時(shí)間間隔以及輪詢應(yīng)用程序時(shí)應(yīng)該調(diào)用的回調(diào)函數(shù)

原型

void tcp_poll(struct tcp_pcb *pcb,

err_t (* poll)(void *arg, struct tcp_pcb *tpcb),

u8_t interval)

參數(shù)

pcb:指定一個(gè)連接(pcb)

poll: 指定輪詢應(yīng)用程序時(shí)應(yīng)該調(diào)用的回調(diào)函數(shù)

interval:指定輪詢的時(shí)間間隔。時(shí)間間隔應(yīng)該以TCP的細(xì)粒度定時(shí)器為單位,典型的設(shè)置

是每秒鐘兩次。把參數(shù)“interval”設(shè)置為10意味著應(yīng)用程序?qū)⒚?秒鐘輪詢一次。

返回

無(wú)

14、tcp_close()

功能

關(guān)閉一個(gè)指定的TCP連接,調(diào)用該函數(shù)后,TCP代碼將會(huì)釋放(刪除)pcb結(jié)構(gòu)

原型

err_t tcp_close(struct tcp_pcb *pcb)

參數(shù)

pcb: 指定一個(gè)需要關(guān)閉的連接(pcb)

返回

ERR_MEM:當(dāng)需要關(guān)閉的連接沒有可用的內(nèi)存時(shí),該函數(shù)返回ERR_MEM。如果這樣的

話,應(yīng)用程序?qū)⑼ㄟ^(guò)事先確立的回調(diào)函數(shù)或者是輪詢功能來(lái)等待及重新關(guān)閉連接

ERR_OK:連接正常關(guān)閉。

15、tcp_abort()

該函數(shù)通過(guò)向遠(yuǎn)程主機(jī)發(fā)送一個(gè)RST(復(fù)位)段來(lái)中止連接。pcb結(jié)構(gòu)將會(huì)被釋放。該函數(shù)是不會(huì)失敗的,它一定能完成中止的目的。如果連接是因?yàn)橐粋€(gè)錯(cuò)誤而產(chǎn)生了中止,則應(yīng)用程序會(huì)通過(guò)回調(diào)函數(shù)靈敏地處理這個(gè)事件。通常發(fā)送錯(cuò)誤而引起的連接中止都是因?yàn)閮?nèi)存資源短缺引起的。設(shè)置處理錯(cuò)誤的回調(diào)函數(shù)是通過(guò)函數(shù)tcp_err()來(lái)完成。

功能

中止一個(gè)指定的連接(pcb)

原型

void tcp_abort(struct tcp_pcb *pcb)

參數(shù)

pcb: 指定一個(gè)需要關(guān)閉的連接(pcb)

返回

無(wú)

16、tcp_err()

該函數(shù)用于指定處理錯(cuò)誤的回調(diào)函數(shù)。一個(gè)可靠的優(yōu)秀的應(yīng)用程序一般都要處理可能出現(xiàn)的錯(cuò)誤,如內(nèi)存不可用等,這就需要調(diào)用該函數(shù)來(lái)指定一個(gè)回調(diào)函數(shù)來(lái)獲取錯(cuò)誤信息

功能

指定處理錯(cuò)誤的回調(diào)函數(shù)

原型

void tcp_err(struct tcp_pcb *pcb,

void (* err)(void *arg, err_t err))

參數(shù)

pcb: 指定需要處理的發(fā)送錯(cuò)誤的連接(pcb)

err: 指定發(fā)送錯(cuò)誤時(shí)調(diào)用的回調(diào)函數(shù)。因?yàn)閜cb結(jié)構(gòu)可能已經(jīng)被刪除了,所以在處理錯(cuò)誤

的回調(diào)函數(shù)中pcb參數(shù)不可能傳遞進(jìn)來(lái)。

返回

無(wú)

02、UDP相關(guān)API

 1、udp_new()

該函數(shù)用于建立一個(gè)用于UDP通信的UDP控制塊(pcb),但是這個(gè)pcb并沒有被激活,除非該pcb已經(jīng)被綁定到一個(gè)本地地址上或者連接到一個(gè)固定地址的遠(yuǎn)程主機(jī)。在定義一個(gè)udp_pcb控制塊后該函數(shù)應(yīng)該首先被調(diào)用,以建立該控制塊的連接標(biāo)志

功能

建立一個(gè)用于UDP通信的UDP控制塊(pcb)

原型

struct udp_pcb *udp_new(void)

參數(shù)

無(wú)

返回

udp_pcb:建立的UDP連接的控制塊(pcb)

2、udp_remove()

該函數(shù)用于刪除一個(gè)指定的連接,通常是控制塊在建立成功后,即在函數(shù)udp_new()調(diào)用之后,當(dāng)不需要該網(wǎng)絡(luò)連接來(lái)通信了,就需要將其刪除,以釋放該連接(pcb)所占用的資源。

功能

刪除并釋放掉一個(gè)udp_pcb

原型

void udp_remove(struct udp_pcb *pcb)

參數(shù)

pcb:指定要?jiǎng)h除的連接(pcb)

返回

無(wú)

3、udp_bind()

該函數(shù)用戶綁定本地的IP地址和端口號(hào),用戶可以將其綁定在一個(gè)任意的本地IP地址上,它也只能在函數(shù)udp_new()調(diào)用之后才能調(diào)用

功能

為指定的連接綁定本地IP地址和端口號(hào)

原型

err_t udp_bind(struct udp_pcb *pcb,

struct ip_addr *ipaddr,

u16_t port)

參數(shù)

pcb:指定一個(gè)連接(pcb)

ipaddr:綁定的本地IP地址。如果為IP_ADDR_ANY,則將連接綁定到所有的本地IP地址上

port: 綁定的本地端口號(hào)。注意:千萬(wàn)不要和其它的應(yīng)用程序產(chǎn)生沖突

返回

ERR_OK:正確地綁定了指定的連接

ERR_USE: 指定的端口號(hào)已經(jīng)綁定了一個(gè)連接,產(chǎn)生了沖突

4、udp_connect()

該函數(shù)將一個(gè)指定的連接(pcb)連接到遠(yuǎn)程主機(jī)。由于UDP通信是面向無(wú)連接的,所以這不會(huì)參數(shù)任何的網(wǎng)絡(luò)流量(網(wǎng)絡(luò)數(shù)據(jù)收發(fā)),它僅僅是設(shè)置了一個(gè)遠(yuǎn)程連接的IP地址和端口號(hào)。

功能

將參數(shù)“pcb”指定的連接控制塊連接到遠(yuǎn)程主機(jī)

原型

err_t udp_connect(struct udp_pcb *pcb,

struct ip_addr *ipaddr,

u16_t port)

參數(shù)

pcb:指定一個(gè)連接(pcb)

ipaddr:設(shè)置連接的遠(yuǎn)程主機(jī)IP地址

port: 設(shè)置連接的遠(yuǎn)程主機(jī)端口號(hào)

返回

ERR_OK:正確連接到遠(yuǎn)程主機(jī)

其它值: LwIP的一些錯(cuò)誤代碼標(biāo)志,表示連接沒有正確建立

5、udp_disconnect()

該函數(shù)關(guān)閉參數(shù)“pcb”指定的連接,同函數(shù)udp_connect()作用相反。由于UDP通信是面向無(wú)連接的,所以這個(gè)函數(shù)同樣不會(huì)參數(shù)任何的網(wǎng)絡(luò)流量((網(wǎng)絡(luò)數(shù)據(jù)收發(fā)),它僅僅是刪除了遠(yuǎn)程連接的地址

功能

關(guān)閉參數(shù)“pcb”指定的連接, 同函數(shù)udp_connect()作用相反

原型

void udp_disconnect(struct udp_pcb *pcb)

參數(shù)

pcb:指定要?jiǎng)h除的連接(pcb)

返回

無(wú)

6、udp_send()

該函數(shù)使用UDP協(xié)議發(fā)送pbufp指向的數(shù)據(jù)。在需要發(fā)送數(shù)據(jù)時(shí)調(diào)用,發(fā)送后,該pbuf結(jié)構(gòu)并沒有被釋放。調(diào)用該函數(shù)后,數(shù)據(jù)包將被發(fā)送到存放在pcb中的當(dāng)前指定的IP地址和端口號(hào)上。如果該pcb沒有連接到一個(gè)固定的端口號(hào),那么該函數(shù)將會(huì)自動(dòng)隨機(jī)地分配一個(gè)端口號(hào),并將數(shù)據(jù)包發(fā)送出去。通常,在調(diào)用前都會(huì)先調(diào)用函數(shù)udp_connect()

功能

使用UDP協(xié)議發(fā)送pbuf p指向的數(shù)據(jù)

原型

err_t udp_send(struct udp_pcb *pcb, struct pbuf *p)

參數(shù)

pcb:指定發(fā)送數(shù)據(jù)的連接(pcb)

p: 包含需要發(fā)送數(shù)據(jù)的pbuf鏈

返回

ERR_OK:數(shù)據(jù)包成功發(fā)送,沒有任何錯(cuò)誤發(fā)生

ERR_MEM:內(nèi)存不可用

ERR_RTE:不能找到到達(dá)遠(yuǎn)程主機(jī)的路由

其它值:其它的一些錯(cuò)誤碼,都表示發(fā)送了錯(cuò)誤

7、udp_sendto()

該函數(shù)同udp_send()作用一樣,但是它指定了發(fā)送的目的主機(jī)IP地址和端口號(hào),相當(dāng)于udp_connect()和函數(shù)udp_send()合在一起使用的效果。但是,如果在調(diào)用該函數(shù)前已經(jīng)調(diào)用過(guò)函數(shù)udp_connect(),那么發(fā)送目的主機(jī)的IP地址和端口號(hào)將以本函數(shù)指定的為準(zhǔn),由函數(shù)udp_connect()指定的將會(huì)被刷新

功能

向具有指定的IP地址和端口號(hào)遠(yuǎn)程主機(jī)發(fā)送UDP數(shù)據(jù)

原型

err_t udp_sendto(struct udp_pcb *pcb,

struct pbuf *p,

struct ip_addr *dst_ip,

u16_t dst_port)

參數(shù)

pcb:指定發(fā)送數(shù)據(jù)的連接(pcb)

p: 包含需要發(fā)送數(shù)據(jù)的pbuf鏈

dst_ip:發(fā)送數(shù)據(jù)的遠(yuǎn)程主機(jī)IP地址

dst_port:發(fā)送數(shù)據(jù)的遠(yuǎn)程主機(jī)端口號(hào)

返回

同函數(shù)udp_send()的返回值一樣

8、udp_recv()

該函數(shù)用于指定當(dāng)有新的UDP數(shù)據(jù)接收到時(shí)被調(diào)用的回調(diào)函數(shù),回調(diào)函數(shù)將的參數(shù)將傳遞進(jìn)遠(yuǎn)程主機(jī)的IP地址、端口號(hào)及接收到的數(shù)據(jù)等信息

功能

指定一個(gè)接收到UDP數(shù)據(jù)包時(shí)被調(diào)用的回調(diào)函數(shù)

原型

void udp_recv(struct udp_pcb *pcb,

void (* recv)(void *arg,

struct udp_pcb *upcb,

struct pbuf *p,

struct ip_addr *addr,

u16_t port),

void *recv_arg)

參數(shù)

pcb:指定一個(gè)連接(pcb)

recv: 指定數(shù)據(jù)包接收到時(shí)的回調(diào)函數(shù)

recv_arg:傳遞給回調(diào)函數(shù)的參數(shù)

返回

無(wú)

感謝各位的閱讀!關(guān)于“l(fā)wip中TCP和UDP的API有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

標(biāo)題名稱:lwip中TCP和UDP的API有哪些
標(biāo)題URL:http://bm7419.com/article44/gihcee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、面包屑導(dǎo)航、關(guān)鍵詞優(yōu)化、外貿(mào)網(wǎng)站建設(shè)、App開發(fā)定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)