女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

第三十章 W55MH32 HTTP_Server&NetBIOS示例

W55MH32 ? 來源:W55MH32 ? 作者:W55MH32 ? 2025-07-24 16:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

單芯片解決方案,開啟全新體驗——W55MH32 高性能以太網單片機

W55MH32是WIZnet重磅推出的高性能以太網單片機,它為用戶帶來前所未有的集成化體驗。這顆芯片將強大的組件集于一身,具體來說,一顆W55MH32內置高性能Arm? Cortex-M3核心,其主頻最高可達216MHz;配備1024KB FLASH與96KB SRAM,滿足存儲與數據處理需求;集成TOE引擎,包含WIZnet全硬件TCP/IP協議棧、內置MAC以及PHY,擁有獨立的32KB以太網收發緩存,可供8個獨立硬件socket使用。如此配置,真正實現了All-in-One解決方案,為開發者提供極大便利。

在封裝規格上,W55MH32提供了兩種選擇:QFN100和QFN68。

W55MH32L采用QFN100封裝版本,尺寸為12x12mm,其資源豐富,專為各種復雜工控場景設計。它擁有66個GPIO、3個ADC、12通道DMA、17個定時器、2個I2C、5個串口、2個SPI接口(其中1個帶I2S接口復用)、1個CAN、1個USB2.0以及1個SDIO接口。如此豐富的外設資源,能夠輕松應對工業控制中多樣化的連接需求,無論是與各類傳感器、執行器的通信,還是對復雜工業協議的支持,都能游刃有余,成為復雜工控領域的理想選擇。同系列還有QFN68封裝的W55MH32Q版本,該版本體積更小,僅為8x8mm,成本低,適合集成度高的網關模組等場景,軟件使用方法一致。更多信息和資料請進入http://www.w5500.com/網站或者私信獲取。

此外,本W55MH32支持硬件加密算法單元,WIZnet還推出TOE+SSL應用,涵蓋TCP SSL、HTTP SSL以及 MQTT SSL等,為網絡通信安全再添保障。

為助力開發者快速上手與深入開發,基于W55MH32L這顆芯片,WIZnet精心打造了配套開發板。開發板集成WIZ-Link芯片,借助一根USB C口數據線,就能輕松實現調試、下載以及串口打印日志等功能。開發板將所有外設全部引出,拓展功能也大幅提升,便于開發者全面評估芯片性能。

若您想獲取芯片和開發板的更多詳細信息,包括產品特性、技術參數以及價格等,歡迎訪問官方網頁:http://www.w5500.com/,我們期待與您共同探索W55MH32的無限可能。

wKgZO2iBiBmAe3DyAACpGc5mWX8613.png

第三十章 W55MH32 HTTP_Server&NetBIOS示例

本篇文章我們將詳細介紹如何在W55MH32芯片上面實現HTTP_Server與NetBIOS功能,并通過實戰例程,為大家講解如何通過NetBIOS來訪問HTTP服務器的網頁內容。

該例程用到的其他網絡協議,例如DHCP,請參考相關章節。有關W55MH32的初始化過程,也請參考相關章節,這里將不再贅述。

1 HTTP_Server&NetBIOS簡介

通過 NetBIOS實現 HTTP_Server是將傳統的 HTTP服務與 NetBIOS名稱解析功能結合,允許基于局域網中的 NetBIOS名稱進行 HTTP請求和響應。通常,NetBIOS被用于局域網中的設備發現與名稱解析,因此,HTTP服務器可以通過 NetBIOS名稱而非 IP地址來進行訪問,簡化了網絡環境中設備的配置和通信。

2 HTTP_Server&NetBIOS特點

名稱解析:利用 NetBIOS名稱解析功能,客戶端可以通過計算機名稱而非 IP地址訪問 HTTP服務器,簡化了網絡配置,尤其適用于沒有 DNS服務器的環境。

局域網優化:適合局域網內部使用,能在沒有互聯網連接的情況下提供 HTTP服務,方便設備之間的通信和資源共享。

無需復雜配置:通過 NetBIOS提供自動的設備發現和名稱解析,減少了對 IP地址配置的依賴,使得設備間互聯更加便捷。

兼容性:適用于舊版系統或老舊硬件設備,尤其是在 Windows系統中,NetBIOS和 HTTP服務器可以平滑集成。

提高網絡效率:通過 NetBIOS提供的輕量級通信機制,HTTP服務在局域網環境中能夠提供快速且穩定的數據傳輸。

3 HTTP_Server&NetBIOS的基本工作流程

1.初始化:HTTP服務器啟動,使用 NetBIOS over TCP/IP(NBT)協議在局域網內廣播自己的名稱。

2.名稱解析:客戶端通過 NetBIOS名稱解析服務(NBNS)獲取服務器的 IP地址。

3.客戶端請求:客戶端通過 TCP連接向 HTTP服務器發送 HTTP請求。

4.請求處理:服務器處理請求,生成相應的 HTTP響應并準備返回。

5.響應返回:服務器通過 TCP連接將響應數據(如網頁或文件)發送回客戶端。

6.會話關閉:請求完成后,服務器和客戶端關閉連接或保持連接等待下次請求。

7.結束與清理:服務器釋放資源,準備處理下一個請求。

HTTP的請求-響應模型通常由以下幾個步驟組成

建立連接:客戶端與服務器之間基于TCP/IP協議建立連接。

發送請求:客戶端向服務器發送請求,請求中包含要訪問的資源的 URL、請求方法(GET、POST、PUT、DELETE等)、請求頭(例如,Accept、User-Agent)以及可選的請求體(對于 POST 或 PUT請求)。

處理請求:服務器接收到請求后,根據請求中的信息找到相應的資源,執行對應的處理操作。這可能涉及從數據庫中檢索數據、生成動態內容或者簡單地返回靜態文件。

發送響應:服務器將處理后的結果封裝在響應中,并將其發送回客戶端。響應包含狀態碼(用于指示請求的成功或失敗)、響應頭(例如,Content-Type、Content-Length)以及可選的響應體(例如,HTML頁面、圖像數據)。

關閉連接:在完成請求-響應周期后,客戶端和服務器之間的連接將被關閉,除非使用了持久連接(如 HTTP/1.1中的 keep-alive)。

4 HTTP請求方法

在HTTP協議中,GET和POST是兩種常用的請求方法,用于客戶端向服務器發送數據和獲取資源。

GET方法

GET方法通常用于從服務器獲取資源。它有以下特點:

參數傳遞:請求參數通過URL中的查詢字符串傳遞,形如?key1=value1&key2=value2。

數據大小限制:由于參數附加在URL后,長度可能受URL長度限制(取決于瀏覽器和服務器設置)。

安全性:數據在URL中明文顯示,不適合傳遞敏感信息。

請求格式:

GET HTTP/

Request-URI:表示目標資源的路徑,可能包含參數。

Version:HTTP協議版本。

Headers:包含元信息,例如客戶端的屬性、支持的格式等。

Blank Line:空行。

POST方法

POST方法通常用于向服務器提交數據。它有以下特點:

參數傳遞:數據放在請求體中,而不是URL中。

數據大小限制:POST請求的體積沒有明顯限制,可以傳遞大量數據。

安全性:數據在請求體中傳輸,相對來說更安全。

請求格式:

POST HTTP/

字段解釋:

Request-URI:目標資源的路徑,通常是API的端點。

Headers:元信息,例如內容類型和長度。

Blank Line:空行,區分頭和主體。

Body:數據的主體,包含客戶端發送到服務器的長度。

5 HTTP協議響應內容

HTTP協議響應內容包含狀態行、響應頭以及響應體三個部分。

狀態行

HTTP狀態行包含HTTP協議版本、狀態碼以及狀態描述。

狀態碼由三個十進制數字組成,第一個十進制數字定義了狀態碼的類型。

狀態碼分為五類:

1xx(信息性狀態碼):表示接收的請求正在處理。

2xx(成功狀態碼):表示請求正常處理完畢。

3xx(重定向狀態碼):需要后續操作才能完成這一請求。

4xx(客戶端錯誤狀態碼):表示請求包含語法錯誤或無法完成。

5xx(服務器錯誤狀態碼):服務器在處理請求的過程中發生了錯誤。

示例:

HTTP/1.1200 OK

響應頭

響應頭則會包含內容類型、長度、編碼等信息。

常見的響應頭字段有:

Content-Type:響應內容的MIME類型,例如 text/html、application/json。

Content-Length:響應內容的字節長度。

Server:服務器信息。

Set-Cookie:設置客戶端的Cookie。

示例:

Content-Type: text/html; charset=UTF-8 Content-Length:3495 Server:Apache/2.4.41(Ubuntu)

響應體

響應體包含實際的數據內容,具體形式取決于響應的類型和請求內容。例如:HTML頁面內容,JSON數據,文件的二進制數據等。

如果是狀態碼為204 No Content或 304 Not Modified的響應,則通常沒有正文。

注意:響應體和響應頭之間會添加一個空行來分隔內容。

6 Web頁面的基本構成

HTML(超文本標記語言)

、、。

作用:定義網頁的結構和內容。

內容:

結構標簽:如

內容標簽:如

、、。

表單標簽:如 、、。

CSS(層疊樣式表)

作用:控制網頁的樣式和布局。

內容:

字體設置:如 font-family、font-size。

顏色設置:如 color、background-color。

布局設計:如 margin、padding、display、flex。

響應式設計:如媒體查詢(@media)。

JavaScript(腳本語言)

作用:增加網頁的交互性和動態功能。

應用:

表單驗證。

動畫效果。

與服務器交互(如通過 AJAX請求)。

處理用戶事件(如點擊、懸停)。

Meta信息

中。

作用:提供頁面的元數據,通常包含在

內容:

網頁標題:

字符集:。

SEO信息:如 。

設備適配:如 。

示例:

Simple Page body{ font-family:Arial, sans-serif; text-align: center; padding:20px;} button{ padding:10px20px; cursor: pointer;} Hello, Web! Click the button for a surprise.

7 Web頁面交互

Web頁面實現HTTP請求的方式:

HTTP請求頁面

描述:客戶端通過 HTTP協議向服務器發送請求,服務器處理后返回響應。

特點:

最基礎的交互方式。

包括常見的 HTTP方法:GET、POST、PUT、DELETE等。

示例:

GET請求:瀏覽器訪問網頁,獲取靜態資源(HTML、CSS、JavaScript等)。

POST請求:提交表單數據。

表單提交

描述:通過 HTML表單向服務器提交數據。

特點:

表單數據會被編碼后隨請求發送。

可使用 GET或 POST方法。

示例:

Submit

AJAX(Asynchronous JavaScript and XML)

描述:使用 JavaScript在后臺與服務器通信,更新部分頁面內容而無需刷新整個頁面。

特點:

提高用戶體驗,減少頁面加載時間。

現代開發中多用 JSON代替 XML。

示例:

fetch('/api/data',{ method:'GET' }) .then(response=> response.json()) .then(data=> console.log(data));

Web服務器響應處理

直接響應

定義:服務器直接處理請求,返回靜態資源或簡單的動態內容,而不調用外部腳本或程序。

特點

高效:直接處理請求,無需額外調用外部程序,適合靜態內容。

適用場景:

靜態資源(HTML、CSS、JavaScript、圖像等)的分發。

輕量級動態內容生成。

工作流程

客戶端發送 HTTP請求。

服務器解析請求 URL,查找相應的資源(如文件路徑)。

直接讀取資源內容并返回給客戶端,附加適當的 HTTP響應頭。

CGI響應

定義:服務器通過 CGI(Common Gateway Interface)調用外部程序或腳本,處理客戶端請求并生成動態響應內容。

特點

靈活性:可以動態生成內容,支持復雜邏輯。

適用場景:

動態內容生成(如用戶登錄、數據查詢)。

與數據庫交互或其他后臺服務的復雜邏輯處理。

工作流程

客戶端發送 HTTP請求。

服務器解析請求并將請求數據(如 URL參數或表單數據)傳遞給 CGI程序。

CGI程序處理請求,生成響應內容并返回給服務器。

服務器將 CGI程序生成的內容包裝為 HTTP響應發送給客戶端。

8 HTTP_Server&NetBIOS應用場景

接下來,我們了解下在W55MH32上,可以使用HTTP_Server&NetBIOS完成哪些操作及應用呢?

1.簡化設備互聯:通過 NetBIOS名稱解析,嵌入式設備無需依賴 DNS即可在局域網內互相發現和訪問 HTTP服務,簡化網絡配置。

2.自動化配置與管理:NetBIOS使得設備可以通過名稱自動發現并配置,提高設備部署和維護效率,尤其適用于大規模嵌入式設備部署。

3.無需 DNS的網絡環境:適用于沒有 DNS的小型局域網或開發環境,減少了 IP地址管理的復雜性,提供便捷的設備通信方式。

4.調試與維護工具:NetBIOS和 HTTP Server的結合使得開發人員能夠快速調試嵌入式設備,監控系統性能并進行故障排查。

5.嵌入式Web服務:提供基于HTTP的控制接口或狀態監控,方便遠程管理和調試,適合嵌入式設備的配置和管理。

9實現過程

接下來,我們在W55MH32上實現HTTP_Server&NetBIOS功能。

注意:測試實例需要PC端和W55MH32處于同一網段。

在主循環中,程序并行處理 HTTP與 NetBIOS相關事務。有以下步驟:

1. while(1) 2. { 3. httpServer_run(SOCKET_ID); 4. do_netbios(SOCKET_ID); 5. } 6.

步驟一:HTTP服務器處理

httpServer_run()函數負責 HTTP服務器功能,根據socket狀態進行監聽、接收請求、處理并響應,如針對不同的 GET請求返回對應網頁內容,處理 POST請求時更新配置并設置重啟標志。

httpServer_run()函數如下:

1. void httpServer_run(uint8_t seqnum) 2. { 3. uint8_t s;// socket number 4. uint16_t len; 5. uint32_t gettime=0; 6. 7. #ifdef _HTTPSERVER_DEBUG_ 8. uint8_t destip[4]={ 9. 0, 10. }; 11. uint16_t destport=0; 12. #endif 13. 14. http_request =(st_http_request*)pHTTP_RX;// Structure of HTTP Request 15. parsed_http_request=(st_http_request*)pHTTP_TX; 16. 17. // Get the H/W socket number 18. s= getHTTPSocketNum(seqnum); 19. 20. /* HTTP Service Start */ 21. switch(getSn_SR(s)) 22. { 23. case SOCK_ESTABLISHED: 24. // Interrupt clear 25. if(getSn_IR(s)&Sn_IR_CON) 26. { 27. setSn_IR(s,Sn_IR_CON); 28. } 29. 30. // HTTP Process states 31. switch(HTTPSock_Status[seqnum].sock_status) 32. { 33. case STATE_HTTP_IDLE: 34. if((len= getSn_RX_RSR(s))>0) 35. { 36. if(len> DATA_BUF_SIZE) len= DATA_BUF_SIZE; 37. len = recv(s,(uint8_t*)http_request, len); 38. *(((uint8_t*)http_request)+ len)=''; 39. 40. parse_http_request(parsed_http_request,(uint8_t*)http_request); 41. #ifdef _HTTPSERVER_DEBUG_ 42. getSn_DIPR(s, destip); 43. destport= getSn_DPORT(s); 44. printf("rn"); 45. printf("> HTTPSocket[%d] : HTTP Request received ", s); 46. printf("from %d.%d.%d.%d : %drn", destip[0], destip[1], destip[2], destip[3], destport); 47. #endif 48. #ifdef _HTTPSERVER_DEBUG_ 49. printf("> HTTPSocket[%d] : [State] STATE_HTTP_REQ_DONErn", s); 50. #endif 51. // HTTP 'response' handler; includes send_http_response_header / body function 52. http_process_handler(s, parsed_http_request); 53. 54. gettime= get_httpServer_timecount(); 55. // Check the TX socket buffer for End of HTTP response sends 56. while(getSn_TX_FSR(s)!=(getSn_TxMAX(s))) 57. { 58. if((get_httpServer_timecount()- gettime)>3) 59. { 60. #ifdef _HTTPSERVER_DEBUG_ 61. printf("> HTTPSocket[%d] : [State] STATE_HTTP_REQ_DONE: TX Buffer clear timeoutrn", s); 62. #endif 63. break; 64. } 65. } 66. 67. if(HTTPSock_Status[seqnum].file_len>0) 68. HTTPSock_Status[seqnum].sock_status= STATE_HTTP_RES_INPROC; 69. else 70. HTTPSock_Status[seqnum].sock_status= STATE_HTTP_RES_DONE;// Send the 'HTTP response' end 71. } 72. break; 73. 74. case STATE_HTTP_RES_INPROC: 75. /* Repeat: Send the remain parts of HTTP responses */ 76. #ifdef _HTTPSERVER_DEBUG_ 77. printf("> HTTPSocket[%d] : [State] STATE_HTTP_RES_INPROCrn", s); 78. #endif 79. // Repeatedly send remaining data to client 80. send_http_response_body(s,0, http_response,0,0); 81. 82. if(HTTPSock_Status[seqnum].file_len==0)HTTPSock_Status[seqnum].sock_status= STATE_HTTP_RES_DONE; 83. break; 84. 85. case STATE_HTTP_RES_DONE: 86. #ifdef _HTTPSERVER_DEBUG_ 87. printf("> HTTPSocket[%d] : [State] STATE_HTTP_RES_DONErn", s); 88. #endif 89. // Socket file info structure re-initialize 90. HTTPSock_Status[seqnum].file_len =0; 91. HTTPSock_Status[seqnum].file_offset=0; 92. HTTPSock_Status[seqnum].file_start =0; 93. HTTPSock_Status[seqnum].sock_status= STATE_HTTP_IDLE; 94. 95. //#ifdef _USE_SDCARD_ 96. // f_close(&fs); 97. //#endif 98. #ifdef _USE_WATCHDOG_ 99. HTTPServer_WDT_Reset(); 100. #endif 101. http_disconnect(s); 102. break; 103. 104. default: 105. break; 106. } 107. break; 108. 109. case SOCK_CLOSE_WAIT: 110. #ifdef _HTTPSERVER_DEBUG_ 111. printf("> HTTPSocket[%d] : ClOSE_WAITrn", s);// if a peer requests to close the current connection 112. #endif 113. disconnect(s); 114. break; 115. 116. case SOCK_CLOSED: 117. #ifdef _HTTPSERVER_DEBUG_ 118. printf("> HTTPSocket[%d] : CLOSEDrn", s); 119. #endif 120. if(socket(s,Sn_MR_TCP, HTTP_SERVER_PORT,0x00)== s)/* Reinitialize the socket */ 121. { 122. #ifdef _HTTPSERVER_DEBUG_ 123. printf("> HTTPSocket[%d] : OPENrn", s); 124. #endif 125. } 126. break; 127. 128. case SOCK_INIT: 129. listen(s); 130. break; 131. 132. case SOCK_LISTEN: 133. break; 134. 135. default: 136. break; 137. 138. }// end of switch 139. 140. #ifdef _USE_WATCHDOG_ 141. HTTPServer_WDT_Reset(); 142. #endif 143. } 144.

該函數用于處理 HTTP服務器的運行邏輯。函數接受一個參數 seqnum,表示當前處理的套接字的序列號。進入該函數后,程序會執行一個狀態機,根據Socket的狀態來執行不同的操作。

當Socket處于SOCK_CLOSED時為關閉狀態,程序會打開并重新初始化套接字;

為SOCK_ESTABLISHED時表示已建立連接,首先會清除中斷標志,然后根據套接字的狀態進行不同的處理,在空閑狀態時,接收并解析數據,處理 HTTP請求后發送響應,并根據文件長度更新狀態;在響應處理中狀態時,發送剩余的響應數據,文件傳輸完成時切換到響應完成狀態;響應完成后重置文件信息并關閉套接字,返回空閑狀態;

SOCK_CLOSE_WAIT則為關閉等待狀態,此時調用 disconnect()函數關閉套接字;

SOCK_INIT表示處于初始化狀態,調用 listen()函數監聽連接;

SOCK_LISTEN為處于監聽狀態,不進行任何操作。

步驟二:NetBIOS服務處理

do_netbios()函數實現 NetBIOS名稱解析,當處于 SOCK_UDP 狀態且接收到數據包,若為對本機 NetBIOS名稱的查詢,便構造并發送響應包,在 SOCK_CLOSED狀態時則重新打開socket。通過這樣的循環機制,程序持續提供 HTTP服務與 NetBIOS名稱解析服務。

do_netbios()函數如下:

1. void do_netbios(uint8_t sn) 2. { 3. unsignedchar state; 4. unsignedint len; 5. state= getSn_SR(sn); 6. switch(state) 7. { 8. case SOCK_UDP: 9. if((len= getSn_RX_RSR(sn))>0) 10. { 11. unsignedchar rem_ip_addr[4]; 12. uint16_t rem_udp_port; 13. char netbios_name[NETBIOS_NAME_LEN+1]; 14. NETBIOS_HDR *netbios_hdr; 15. NETBIOS_NAME_HDR*netbios_name_hdr; 16. len= recvfrom(sn,(unsignedchar*)&netbios_rx_buf, len, rem_ip_addr,&rem_udp_port); 17. printf("rem_ip_addr=%d.%d.%d.%d:%drn", rem_ip_addr[0], rem_ip_addr[1], rem_ip_addr[2], rem_ip_addr[3], rem_udp_port); 18. netbios_hdr =(NETBIOS_HDR*)netbios_rx_buf; 19. netbios_name_hdr=(NETBIOS_NAME_HDR*)(netbios_hdr+1); 20. // If the packet is a NetBIOS query packet 21. if(((netbios_hdr->flags& ntohs(NETB_HFLAG_OPCODE))== ntohs(NETB_HFLAG_OPCODE_NAME_QUERY))&&((netbios_hdr->flags& ntohs(NETB_HFLAG_RESPONSE))==0)&&(netbios_hdr->questions== ntohs(1))) 22. { 23. printf("netbios name query questionrn"); 24. // Decode the NetBIOS package 25. netbios_name_decoding((char*)(netbios_name_hdr->encname), netbios_name,sizeof(netbios_name)); 26. printf("name is %srn", netbios_name); 27. // If the query is made against the native Netbios 28. if(strcmp(netbios_name, NETBIOS_W55MH32_NAME)==0) 29. { 30. uint8_t ip_addr[4]; 31. NETBIOS_RESP*resp=(NETBIOS_RESP*)netbios_tx_buf; 32. // Handle the header of the NetBIOS response packet 33. resp->resp_hdr.trans_id = netbios_hdr->trans_id; 34. resp->resp_hdr.flags = htons(NETB_HFLAG_RESPONSE| NETB_HFLAG_OPCODE_NAME_QUERY| NETB_HFLAG_AUTHORATIVE | NETB_HFLAG_RECURS_DESIRED); 35. resp->resp_hdr.questions =0; 36. resp->resp_hdr.answerRRs = htons(1); 37. resp->resp_hdr.authorityRRs =0; 38. resp->resp_hdr.additionalRRs=0; 39. // Process the header data of the NetBIOS response packet 40. memcpy(resp->resp_name.encname, netbios_name_hdr->encname,sizeof(netbios_name_hdr->encname)); 41. resp->resp_name.nametype= netbios_name_hdr->nametype; 42. resp->resp_name.type = netbios_name_hdr->type; 43. resp->resp_name.cls = netbios_name_hdr->cls; 44. resp->resp_name.ttl = htonl(NETBIOS_NAME_TTL); 45. resp->resp_name.datalen = htons(sizeof(resp->resp_name.flags)+sizeof(resp->resp_name.addr)); 46. resp->resp_name.flags = htons(NETB_NFLAG_NODETYPE_BNODE); 47. getSIPR(ip_addr); 48. memcpy(resp->resp_name.addr, ip_addr,4); 49. // Send a response packet 50. sendto(sn,(unsignedchar*)resp,sizeof(NETBIOS_RESP), rem_ip_addr, rem_udp_port); 51. printf("send responsern"); 52. } 53. } 54. } 55. break; 56. 57. case SOCK_CLOSED: 58. close(sn); 59. socket(sn,Sn_MR_UDP, NETBIOS_PORT,0); 60. break; 61. 62. default: 63. break; 64. } 65. } 66.

do_netbios()函數主要執行 NetBIOS相關操作。程序首先會執行一個狀態機,根據套接字狀態執行不同操作:在關閉狀態(SOCK_CLOSED)時,關閉并重新創建套接字監聽NetBIOS端口;在UDP狀態時(SOCK_UDP),接收數據并解析 NetBIOS查詢包,匹配本地名稱時發送響應包;其他狀態下不操作。

10運行結果

燒錄例程運行后,首先進行了PHY鏈路檢測,然后是通過DHCP獲取網絡地址并打印網絡地址信息,通過NetBIOS名稱解析打印提示解析名稱,接著我們打開瀏覽器,輸入W55MH32/進行即可訪問網頁信息:

wKgZO2iB7HWAPlNoAABjgi4nL4o065.png

wKgZPGiB7HWACn7dAABP5tQMWms458.png

11總結

本文講解了如何在 W55MH32芯片上實現 HTTP_Server與 NetBIOS功能,并通過 NetBIOS訪問 HTTP服務器網頁內容,通過實戰例程展示了在主循環中并行處理 HTTP與 NetBIOS相關事務的過程。感謝觀看!

WIZnet是一家無晶圓廠半導體公司,成立于 1998年。產品包括互聯網處理器 iMCU?,它采用 TOE(TCP/IP 卸載引擎)技術,基于獨特的專利全硬連線 TCP/IP。iMCU? 面向各種應用中的嵌入式互聯網設備。

WIZnet在全球擁有 70多家分銷商,在香港、韓國、美國設有辦事處,提供技術支持和產品營銷。

香港辦事處管理的區域包括:澳大利亞、印度、土耳其、亞洲(韓國和日本除外)。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 芯片
    +關注

    關注

    460

    文章

    52566

    瀏覽量

    441848
  • NETBIOS
    +關注

    關注

    0

    文章

    8

    瀏覽量

    9498
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    十章 W55MH32中斷應用概覽

    本章講述了W55MH32中斷應用,涵蓋異常類型、NVIC介紹、優先級定義與分組,闡述中斷編程三要點(使能中斷、配置 NVIC、編寫服務函數),并強調優先級分組設置注意事項。
    的頭像 發表于 05-22 17:07 ?1087次閱讀
    第<b class='flag-5'>十章</b> <b class='flag-5'>W55MH32</b>中斷應用概覽

    第二 W55MH32 DHCP示例

    本文介紹 DHCP?協議,包括其在 IP?網絡自動分配參數的功能、便捷配置等特點、工作原理、報文格式和應用場景。通過 W55MH32?實戰例程展示動態獲取網絡地址信息過程,含注冊定時器中斷、啟用模式和獲取信息等步驟,燒錄后可完成檢測與信息打印,PC?端能 PING?通設備。
    的頭像 發表于 07-24 09:02 ?145次閱讀
    第二<b class='flag-5'>章</b> <b class='flag-5'>W55MH32</b> DHCP<b class='flag-5'>示例</b>

    第三章 W55MH32 TCP Client示例

    本文介紹在 W55MH32?芯片上實現 TCP?客戶端模式進行數據回環測試的方法。闡述 TCP?協議概念、特點、與 UDP?區別、應用場景及相關機制。展示實現過程,包括開啟 Keepalive?功能,在主循環運行測試程序。燒錄例程后進行 PHY?鏈路檢測、獲取網絡地址,再借助網絡調試工具測試。
    的頭像 發表于 07-24 09:06 ?154次閱讀
    <b class='flag-5'>第三章</b> <b class='flag-5'>W55MH32</b> TCP Client<b class='flag-5'>示例</b>

    第五 W55MH32 UDP示例

    本文介紹了在 W55MH32?芯片上實現 UDP?通信及數據回環測試的方法。闡述了 UDP?協議的概念、特點、應用場景、報文傳輸流程和報文結構,展示了實現過程,借助網絡調試工具完成測試。
    的頭像 發表于 07-24 09:13 ?78次閱讀
    第五<b class='flag-5'>章</b> <b class='flag-5'>W55MH32</b> UDP<b class='flag-5'>示例</b>

    第六 W55MH32 UDP?Multicast示例

    本文介紹了在W55MH32芯片上實現UDP組播的原理、應用場景及回環測試方法,并通過實戰代碼展示了其具體實現過程。下一篇文章將聚焦DNS例程,講解其工作原理及實現方法,幫助大家更深入地理解網絡通信。敬請期待!
    的頭像 發表于 07-24 09:19 ?121次閱讀
    第六<b class='flag-5'>章</b> <b class='flag-5'>W55MH32</b> UDP?Multicast<b class='flag-5'>示例</b>

    第九 W55MH32 HTTP Server示例

    本文介紹了在 W55MH32?芯片上實現 HTTP Server?功能,并通過瀏覽器修改其網絡地址信息的方法。闡述了 HTTP?協議的概念、特點、應用場景、工作流程、請求方法、響應內容
    的頭像 發表于 07-24 09:35 ?119次閱讀
    第九<b class='flag-5'>章</b> <b class='flag-5'>W55MH32</b> <b class='flag-5'>HTTP</b> <b class='flag-5'>Server</b><b class='flag-5'>示例</b>

    十章 W55MH32 SNTP示例

    本文講解了如何在W55MH32芯片上實現SNTP授時功能,通過實例詳細展示了從SNTP服務器同步時間的實現流程,包括時間請求、響應解析和本地時間校準等核心步驟。文章還對SNTP的應用場景進行了分析,幫助讀者理解其在時間同步中的實際應用價值。
    的頭像 發表于 07-24 09:43 ?153次閱讀
    第<b class='flag-5'>十章</b> <b class='flag-5'>W55MH32</b> SNTP<b class='flag-5'>示例</b>

    第十二 W55MH32 NetBIOS示例

    本文講解了如何在 W55MH32?芯片上實現 NetBIOS?功能,通過實戰例程展示了利用 NetBIOS?進行名稱 PING?測試的具體過程,包括 NetBIOS?功能的調用、請求處
    的頭像 發表于 07-24 09:58 ?126次閱讀
    第十二<b class='flag-5'>章</b> <b class='flag-5'>W55MH32</b> <b class='flag-5'>NetBIOS</b><b class='flag-5'>示例</b>

    第十四章 W55MH32 TFTP示例

    本文講解了如何在 W55MH32?芯片上實現 TFTP?協議,通過實戰例程詳細展示了使用 TFTP?客戶端模式從服務器獲取文本文件的過程,涵蓋 TFTP?初始化、發送讀請求、運行協議并處理結果等核心
    的頭像 發表于 07-24 10:37 ?134次閱讀
    第十四章 <b class='flag-5'>W55MH32</b> TFTP<b class='flag-5'>示例</b>

    第十五 W55MH32 SNMP示例

    本文講解了如何在 W55MH32?芯片上實現 SNMP?功能,通過實戰例程展示了使用 MIB Browser?管理 W55MH32?的具體過程,涵蓋在 MIB Browser?中創建分支、添加葉子
    的頭像 發表于 07-24 10:43 ?143次閱讀
    第十五<b class='flag-5'>章</b> <b class='flag-5'>W55MH32</b> SNMP<b class='flag-5'>示例</b>

    第十六章 W55MH32 PING示例

    本文講解了如何在 W55MH32?芯片上通過 IPRAW?模式實現 ICMP?協議中的 PING?命令,以進行網絡連通性測試,通過實戰例程展示了從發送 PING?請求、接收并解析回復到統計結果的完整
    的頭像 發表于 07-24 11:41 ?53次閱讀
    第十六章 <b class='flag-5'>W55MH32</b> PING<b class='flag-5'>示例</b>

    第十八章 W55MH32 FTP_Server示例

    本文講解了如何在 W55MH32?芯片上實現 FTP?協議的服務器模式,通過實戰例程展示了使用 W55MH32?作為 FTP?服務器與 PC?端進行文件傳輸、目錄操作等功能的過程,涵蓋獲取網絡配置
    的頭像 發表于 07-24 11:55 ?41次閱讀
    第十八章 <b class='flag-5'>W55MH32</b> FTP_<b class='flag-5'>Server</b><b class='flag-5'>示例</b>

    第二十二 W55MH32 MQTT&amp;amp;Aliyun示例

    本文講解了如何在 W55MH32?芯片上實現 MQTT?協議并連接阿里云平臺,通過實戰例程展示了從準備工作、連接配置到消息訂閱、發布及接收處理的完整過程。文章詳細介紹了 MQTT?協議的概念、特點
    的頭像 發表于 07-24 14:17 ?141次閱讀
    第二十二<b class='flag-5'>章</b> <b class='flag-5'>W55MH32</b> MQTT&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;Aliyun<b class='flag-5'>示例</b>

    第二十六章 W55MH32?上位機搜索和配置示例

    本文講解了如何在 W55MH32?芯片上實現上位機搜索和配置功能,通過實戰例程展示了使用開源上位機配置工具 SmartConfigTool?搜索局域網中的 W55MH32?并進行網絡地址配置的過程
    的頭像 發表于 07-24 16:13 ?84次閱讀
    第二十六章 <b class='flag-5'>W55MH32</b>?上位機搜索和配置<b class='flag-5'>示例</b>

    第二十九章 W55MH32 Modbus_TCP_Server示例

    本文講解了如何在 W55MH32?芯片上實現 Modbus TCP?協議的服務器模式,通過實戰例程展示了從初始化 LED?相關函數、主循環調用處理函數到解析處理接收到的報文的完整過程。文章詳細介紹了
    的頭像 發表于 07-24 16:18 ?79次閱讀
    第二十九章 <b class='flag-5'>W55MH32</b> Modbus_TCP_<b class='flag-5'>Server</b><b class='flag-5'>示例</b>