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 < Request-URI > HTTP/< Version > < Headers >

Request-URI:表示目标资源的路径,可能包含参数。

Version:HTTP协议版本。

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

Blank Line:空行。

POST方法

POST方法通常用于向服务器提交数据。它有以下特点:

参数传递:数据放在请求体中,而不是URL中。

数据大小限制:POST请求的体积没有明显限制,可以传递大量数据。

安全性:数据在请求体中传输,相对来说更安全。

请求格式:

POST < Request-URI > HTTP/< Version > < Headers >

字段解释:

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信息:如 。

设备适配:如 。

示例:

< !DOCTYPE html > < htmllang="en" > < head > < meta charset="UTF-8" > < meta name="viewport" content="width=device-width, initial-scale=1.0" > < title >Simple Page< /title > < style > body{ font-family:Arial, sans-serif; text-align: center; padding:20px;} button{ padding:10px20px; cursor: pointer;} < /style > < /head >< h1 >Hello, Web!< /h1 > < p >Click the button for a surprise.< /p >

7 Web页面交互

Web页面实现HTTP请求的方式:

HTTP请求页面

描述:客户端通过 HTTP协议向服务器发送请求,服务器处理后返回响应。

特点:

最基础的交互方式。

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

示例:

GET请求:浏览器访问网页,获取静态资源(HTML、CSS、JavaScript等)。

POST请求:提交表单数据。

表单提交

描述:通过 HTML表单向服务器提交数据。

特点:

表单数据会被编码后随请求发送。

可使用 GET或 POST方法。

示例:

< formaction="/submit" method="post" > < input type="text" name="username" placeholder="Enter your name" > Submit< /button > < /form >

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多家分销商,在香港、韩国、美国设有办事处,提供技术支持和产品营销。

香港办事处管理的区域包括:澳大利亚、印度、土耳其、亚洲(韩国和日本除外)。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    462

    文章

    53550

    浏览量

    459275
  • NETBIOS
    +关注

    关注

    0

    文章

    8

    浏览量

    9589
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    十章 W55MH32中断应用概览

    本章讲述了W55MH32中断应用,涵盖异常类型、NVIC介绍、优先级定义与分组,阐述中断编程三要点(使能中断、配置 NVIC、编写服务函数),并强调优先级分组设置注意事项。
    的头像 发表于 05-22 17:07 1604次阅读
    第<b class='flag-5'>十章</b> <b class='flag-5'>W55MH32</b>中断应用概览

    第二 W55MH32 DHCP示例

    本文介绍 DHCP 协议,包括其在 IP 网络自动分配参数的功能、便捷配置等特点、工作原理、报文格式和应用场景。通过 W55MH32 实战例程展示动态获取网络地址信息过程,含注册定时器中断、启用模式和获取信息等步骤,烧录后可完成检测与信息打印,PC 端能 PING 通设备。
    的头像 发表于 07-24 09:02 585次阅读
    第二<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 770次阅读
    <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 656次阅读
    第五<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 655次阅读
    第六<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 647次阅读
    第九<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 867次阅读
    第<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 567次阅读
    第十二<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 641次阅读
    第十四章 <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 709次阅读
    第十五<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 514次阅读
    第十六章 <b class='flag-5'>W55MH32</b> PING<b class='flag-5'>示例</b>

    第十八章 W55MH32 FTP_Server示例

    本文讲解了如何在 W55MH32 芯片上实现 FTP 协议的服务器模式,通过实战例程展示了使用 W55MH32 作为 FTP 服务器与 PC 端进行文件传输、目录操作等功能的过程,涵盖获取网络配置
    的头像 发表于 07-24 11:55 455次阅读
    第十八章 <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 704次阅读
    第二十二<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 595次阅读
    第二十六章 <b class='flag-5'>W55MH32</b> 上位机搜索和配置<b class='flag-5'>示例</b>

    第二十九章 W55MH32 Modbus_TCP_Server示例

    本文讲解了如何在 W55MH32 芯片上实现 Modbus TCP 协议的服务器模式,通过实战例程展示了从初始化 LED 相关函数、主循环调用处理函数到解析处理接收到的报文的完整过程。文章详细介绍了
    的头像 发表于 07-24 16:18 542次阅读
    第二十九章 <b class='flag-5'>W55MH32</b> Modbus_TCP_<b class='flag-5'>Server</b><b class='flag-5'>示例</b>