|
網(wǎng)上的關(guān)于這個(gè)組合的程序非常少,特地拿出來分享下面是部分代碼
- /*********************************************************************************
- **********************************************************************************
- * 文件名稱: TCP_SERVER.c *
- * 文件簡述:TCP服務(wù)器運(yùn)用 *
- * 創(chuàng)建日期:2018.3 *
- * 版 本:V1.0 *
- * 作 者:Clever *
- * 說 明: *
- **********************************************************************************
- *********************************************************************************/
- /****************************************************************************
- * 名 稱: tcp_server_recv(void *arg, struct tcp_pcb *pcb,struct pbuf *p,err_t err)
- * 功 能:TCP數(shù)據(jù)接收和發(fā)送
- * 入口參數(shù):
- * 返回參數(shù):
- * 說 明:這是一個(gè)回調(diào)函數(shù),當(dāng)一個(gè)TCP段到達(dá)這個(gè)連接時(shí)會被調(diào)用
- ****************************************************************************/
- static err_t tcp_server_recv(void *arg, struct tcp_pcb *pcb,struct pbuf *p,err_t err)
- {
- struct pbuf *p_temp = p;
-
- if(p_temp != NULL)
- {
- tcp_recved(pcb, p_temp->tot_len); //獲取數(shù)據(jù)長度 tot_len:tcp數(shù)據(jù)塊的長度
- while(p_temp != NULL)
- {
- tcp_write(pcb,p_temp->payload,p_temp->len,TCP_WRITE_FLAG_COPY); // payload為TCP數(shù)據(jù)塊的起始位置
- tcp_output(pcb);
- p_temp = p_temp->next;
- }
- }
- else
- {
- tcp_close(pcb); // 作為TCP服務(wù)器不應(yīng)主動關(guān)閉這個(gè)連接
- }
- pbuf_free(p); // 釋放該TCP段
- err = ERR_OK;
- return err;
- }
- /****************************************************************************
- * 名 稱: tcp_server_accept(void *arg, struct tcp_pcb *pcb,struct pbuf *p,err_t err)
- * 功 能:回調(diào)函數(shù)
- * 入口參數(shù):
- * 返回參數(shù):
- * 說 明:這是一個(gè)回調(diào)函數(shù),當(dāng)一個(gè)連接已經(jīng)接受時(shí)會被調(diào)用
- ****************************************************************************/
- static err_t tcp_server_accept(void *arg,struct tcp_pcb *pcb,err_t err)
- {
- tcp_setprio(pcb, TCP_PRIO_MIN); /* 設(shè)置回調(diào)函數(shù)優(yōu)先級,當(dāng)存在幾個(gè)連接時(shí)特別重要,此函數(shù)必須調(diào)用*/
- tcp_recv(pcb,tcp_server_recv); /* 設(shè)置TCP段到時(shí)的回調(diào)函數(shù) */
- err = ERR_OK;
- return err;
- }
- /****************************************************************************
- * 名 稱: TCP_server_init(void)
- * 功 能:完成TCP服務(wù)器的初始化,主要是使得TCP通訊快進(jìn)入監(jiān)聽狀態(tài)
- * 入口參數(shù):
- * 返回參數(shù):
- * 說 明:
- ****************************************************************************/
- void TCP_server_init(void)
- {
- struct tcp_pcb *pcb;
- pcb = tcp_new(); // 建立通信的TCP控制塊(pcb)
- tcp_bind(pcb,IP_ADDR_ANY,TCP_Server_PORT); // 綁定本地IP地址和端口號(作為tcp服務(wù)器)
- pcb = tcp_listen(pcb); // 進(jìn)入監(jiān)聽狀態(tài)
- tcp_accept(pcb,tcp_server_accept); // 設(shè)置有連接請求時(shí)的回調(diào)函數(shù)
- }
復(fù)制代碼
全部代碼51hei下載地址:
STM32F107-LWIP.7z
(7.2 MB, 下載次數(shù): 71)
2021-4-29 23:20 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|