当前位置: 首页 > news >正文

广东微信网站制作公司哪家好域名备案查询官网

广东微信网站制作公司哪家好,域名备案查询官网,最好的cms开源,国家税务总局在上一章节中,我们学习了TCPClient通信测试的相关知识。接下来,本章节将以此为基础,构建一个基础性的TCPServer连接机制,该机制将利用之前所建立的WIFI网络连接。为方便演示,我们将借助网络调试助手工具进行数据的发送…
在上一章节中,我们学习了TCPClient通信测试的相关知识。接下来,本章节将以此为基础,构建一个基础性的TCPServer连接机制,该机制将利用之前所建立的WIFI网络连接。为方便演示,我们将借助网络调试助手工具进行数据的发送,进而对网络通信中接收到的数据进行测试,确保这些数据能够准确无误地回传,以验证通信机制的有效性和稳定性。

本节课目标:

基于ESP32开发板的WiFi网络,实现一个简单的TCPServer连接,通过网络调试助手发送数据,并将接收到的数据原原本本地返回。

本节课内容:

  1. network 与 socket 库的简介
  2. network库的构造与方法
  3. socket 库的构造与方法
  4. 硬件设计
  5. 软件设计
  6. 下载验证

一、network 与 socket 库的简介

MicroPython 的 network 库与 socket 库皆为实现网络连接的重要工具,它们各自拥有独特的功能性并共享某些共通特点。

作为 MicroPython 的一个关键第三方库,network 库专门负责处理 WiFi 和网络连接的各项任务。通过此库,用户能够成功接入无线网络,查询当前网络状态,以及实现数据的收发等功能。在 MicroPython 的架构下,network 库扮演着促进设备间网络连接与通信的核心角色。

至于 network 库与 socket 库之间的主要差异,则体现在它们的应用场景与功能侧重上。具体而言,network 库侧重于设备的 WiFi 和基础网络连接功能的实现,而 socket 库则聚焦于高级网络协议的连接建立与数据传输过程。因此,在实际进行网络连接功能的设计与实施时,需根据具体需求及所依赖的硬件平台,谨慎选择并合理运用相应的库资源。

下面是MicroPython库的network 与 socket 库的链接。

network — 网络配置 — MicroPython latest documentation

socket – 套接字模块 — MicroPython latest documentation

类 WLAN – 控制内置 WiFi 接口 — MicroPython 最新文档

二、network.WLAN类的构造与方法

1. network.WLAN类的构造

构造对象方法如下:

class network.WLAN(interface_id)

使用示例:wlan = network.WLAN(network.STA_IF)

参数描述如下:

参数

描述

interface_id

支持接口

  • network.STA_IF:作为客户端,连接其他的服务器
  • network.AP_IF:作为服务器,其他WiFi客户端连接

返回值:WLAN网络接口对象

2. network.WLAN类的方法

(1)激活或停用网络接口

其方法原型如下:

WLAN.active(is_active[ ])

参数描述如下:

参数

描述

is_active

  • True:激活
  • False:作为服务器,其他WiFi客户端连接

返回值:无

(2)连接网络

其方法原型如下:

WLAN.connect(ssid=None, password=None)

参数描述如下:

参数

描述

ssid

WiFi账号

password

WiFi密码

返回值:Ture:连接成功;Fail:连接失败。

(3)关闭网络

其方法原型如下:

WLAN.disconnet()

返回值:无

(4)获取或者设置网络参数

其方法原型如下:

WLAN.ifconfig((ip, subnet, gateway, dns)[])

参数描述如下:

参数

描述

ip

IP地址

subnet

子网掩码

gateway

网关

dns

DNS服务器

返回值:若此函数为无参数传入,则返回连接网络的信息,反次,为设置网络参数。

以上是 network.WLAN 类常用的方法,还有其他方法可参考 MicroPython 的在线文档。

三、socket 库的构造与方法

1. socket类的构造

构造对象方法如下:

class socket.socket(af=AF_INET, type=SOCK_STREAM, proto=IPPROTO_TCP, /)

使用示例:socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

参数描述如下:

参数

描述

af

地址族

  • socket_AF_INET:IPV4
  • socket_AF_INET6:IPV6

type

socket类型

  • socket.SOCK_STREAM:TCP类型
  • socket.SOCK_DGRAM:UDP类型

proto

网络协议

  • socket.IPPROTO_TCP:TCP协议
  • socket.IPPROTO_UDP:UDP协议

返回值:socket对象

2. socket类的方法

(1)关闭socket接口

其方法原型如下:

socket.close()

返回值:无

(2)设置socket 选项的值

其方法原型如下:

socket.setsockopt(level, optname, value)

参数描述如下:

参数

描述

level

是被设置的选项的级别,如果想要在套接字级别上设置选项,就必须把level设置为SOL_SOCKET

optname

在套接字级别上(SOL_SOCKET),option_name可以有以下取值:

  • SO_DEBUG,打开或关闭调试信息
  • SO_REUSEADDR,打开或关闭地址复用功能
  • SO_DONTROUTE,打开或关闭路由查找功能
  • SO_BROADCAST,允许或禁止发送广播数据
  • SO_SNDBUF,设置发送缓冲区的大小
  • SO_RCVBUF,设置接收缓冲区的大小
  • SO_KEEPALIVE,套接字保活
  • SO_OOBINLINE,紧急数据放入普通数据流
  • SO_NO_CHECK,打开或关闭校验和
  • SO_PRIORITY,设置在套接字发送的所有包的协议定义优先权
  • SO_LINGER,如果选择此选项, close或 shutdown将等到所有套接字里排队的消息成功发送或到达延迟时间后>才会返回. 否则, 调用将立即返回
  • SO_PASSCRED,允许或禁止SCM_CREDENTIALS 控制消息的接收
  • SO_TIMESTAMP,打开或关闭数据报中的时间戳接收
  • SO_RCVLOWAT,设置接收数据前的缓冲区内的最小字节数
  • SO_RCVTIMEO,设置接收超时时间
  • SO_SNDTIMEO,设置发送超时时间
  • SO_BINDTODEVICE,将套接字绑定到一个特定的设备上

value

True:开启;False:关闭

返回值:无

(3)socket绑定到地址

其方法原型如下:

socket.bind(address)

参数描述如下:

参数

描述

address

IP地址(字符串形式输入,如‘192.168.1.100’)

返回值:无

(4)监听连接

用作于 TCPServer 连接。

其方法原型如下:

socket.listen(backlog[])

参数描述如下:

参数

描述

backlog

监听连接数量

返回值:无

(5)接受连接

用作于 TCPServer 连接。注:在此之前,需监听连接

其方法原型如下:

socket.accept()

返回值:conn:新的套接字对象,用来收发消息;address:连接到服务器的客户端地址。

(6)连接远程IP地址

其方法原型如下:

socket.connect(address)

参数描述如下:

参数

描述

address

IP地址(字符串形式输入,如‘192.168.1.100’)

返回值:无

(7)发送数据,返回发送的字节数

其方法原型如下:

socket.send(bytes)

参数描述如下:

参数

描述

bytes

需发送的字节数据

返回值:发送的数据字节数。

(8)接收数据,返回值是一个字节对象

其方法原型如下:

socket.recv(bufsize)

参数描述如下:

参数

描述

bufsize

接收数据的存储区

返回值:接收数据字节对象。

(9)接收数据,返回值是一个字节对象

其方法原型如下:

socket.recvfrom(bufsize)

参数描述如下:

参数

描述

bufsize

接收数据的存储区

返回值:bytes:接收数据字节对象;addressa:套接字发送的地址数据。

(10)UDP发送数据,一般用于UDP连接

其方法原型如下:

socket.sendto(bytes, address)

参数描述如下:

参数

描述

bytes

发送的数据

address

发送至哪个远程IP地址

返回值:发送的数据字节数。

以上方法列出了本书中常用的套接字方法,对于剩余的套接字方法,请参考MicroPython最新的在线文档。

四、硬件设计

1. 例程功能

在本次实验中,我们将ESP32开发板与WiFi网络进行了连接,并完成了TCPServer的连接配置。当TCPServer成功建立连接后,我们采用了网络调试助手作为客户端设备,而开发板则作为服务器端设备。在此环境下,当客户端设备(即网络调试助手)向服务器端设备(即开发板)发送数据时,服务器端设备将接收到的数据完整地回传至客户端设备,从而实现了数据的双向交互。

2. 硬件资源

  • WIFI :ESP32内部自带WIFI模块

四、软件设计

1. 程序流程图

2. 程序

import network
import socket# 网络信息
SSID = 'OrayBox-zsf'                # WIFI名称
PASSWORD = '123456789'              # WIFI密码
Server_IP = '10.168.1.164'          # 服务器IP地址wlan = None                         # 定义一个无线网络
pos = 0                             # 状态机,用于状态切换def connect():"""连接 WIFI 路由器"""global wlanwlan = network.WLAN(network.STA_IF)wlan.active(True)if not wlan.isconnected():print('connecting to network...')wlan.connect(SSID, PASSWORD)while not wlan.isconnected():passprint('network config:', wlan.ifconfig())       # 打印网络参数def goto(label):"""切换状态:param label: 状态号"""global pospos = label"""
------------------------------------------------------------------------------------下面为主函数
------------------------------------------------------------------------------------
"""
# 1、连接 WIFI 路由器
connect()while True:# 循环while pos == 0:                             # 状态 0 : 用于建立socket,连接服务器# 2、获取本地 IP 地址,并打印ip = wlan.ifconfig()[0]print('network config:', ip)# 3、创建 TCP 套接字TCPServer = socket.socket(socket.AF_INET, socket.SOCK_STREAM)       # 创建 TCPServer 对象,IPV4 \ TCP 类型# 4、绑定 本地IP 和 端口号# 设置端口复用,是用来设置套接字选项的函数调用。这个选项用于指定套接字的行为,打开地址复用功能,以便在绑定到一个端口时,能够重新使用这个端口。否则会出错TCPServer.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)TCPServer.bind(('', 8080))# 5、监听,参数是同时连接的客户端数量TCPServer.listen(10)# 6、阻塞等待客户端连接# 返回一个元组 (新 socket, (客户端 IP,端口) )try:new_socket, client_ip_port = TCPServer.accept()       # 连接服务器except BaseException:# 故障处理程序new_socket.close()                          # 关闭新套接字TCPServer.close()                           # 关闭套接字print(' 关闭套接字.... ')goto(0)                                     # 重新返回状态 0breakelse:print('连接建立成功......')new_socket.send('************** ESP32 服务器: '.encode() + str(ip).encode() + ' 欢迎你!!! ****************\r\n'.encode())goto(1)                                     # 进入状态 1:网络连接成功,处理通信while pos == 1:# 状态 1 : 用于连接服务器后,发送接收到的服务器数据try:# 接收到客户端的数据data = new_socket.recv(1024)print(data.decode())except BaseException:# 故障时,关闭连接,重新建立连接new_socket.close()TCPServer.close()                       # 关闭套接字goto(0)breakelse:# 空数据时,不回显if (len(data) == 0):print('接收到空的数据')new_socket.close()TCPServer.close()  # 关闭套接字goto(0)breakelse:# 非空数据回显new_socket.send(data)

五、下载验证

将ESP32开发板与电脑通过WIFI路由器,连接在同一WiFi网络中,配置电脑上的网络调试助手TCP Client参数,如下图所示,并连接服务器网络,将接收到ESP32开发板服务器发送过来的数据。

与ESP32通过TCP协议相互通信。


文章转载自:
http://thu.rnds.cn
http://flaxbush.rnds.cn
http://thrombosthenin.rnds.cn
http://kaross.rnds.cn
http://conglobulate.rnds.cn
http://dibasic.rnds.cn
http://lumbering.rnds.cn
http://pantomimist.rnds.cn
http://corrody.rnds.cn
http://ionic.rnds.cn
http://reagent.rnds.cn
http://pathologist.rnds.cn
http://scolopendrid.rnds.cn
http://gemeinschaft.rnds.cn
http://pholas.rnds.cn
http://completeness.rnds.cn
http://nonflammable.rnds.cn
http://demarcation.rnds.cn
http://adipic.rnds.cn
http://malacostracan.rnds.cn
http://cdp.rnds.cn
http://saleroom.rnds.cn
http://legginess.rnds.cn
http://groom.rnds.cn
http://seti.rnds.cn
http://mussulman.rnds.cn
http://goldstone.rnds.cn
http://extenuation.rnds.cn
http://electrosynthesis.rnds.cn
http://manipulatory.rnds.cn
http://sunglow.rnds.cn
http://sandbar.rnds.cn
http://groundsel.rnds.cn
http://outdid.rnds.cn
http://seidel.rnds.cn
http://chokey.rnds.cn
http://unconventional.rnds.cn
http://ogam.rnds.cn
http://rrl.rnds.cn
http://silex.rnds.cn
http://star.rnds.cn
http://anemone.rnds.cn
http://multiflora.rnds.cn
http://anorthitic.rnds.cn
http://subcompact.rnds.cn
http://lagan.rnds.cn
http://leisured.rnds.cn
http://seriary.rnds.cn
http://samizdatchik.rnds.cn
http://insist.rnds.cn
http://probabilize.rnds.cn
http://organelle.rnds.cn
http://unsuited.rnds.cn
http://nickpoint.rnds.cn
http://amplifier.rnds.cn
http://newsmonger.rnds.cn
http://curacy.rnds.cn
http://specter.rnds.cn
http://obconical.rnds.cn
http://inenarrable.rnds.cn
http://securable.rnds.cn
http://lifemanship.rnds.cn
http://globosity.rnds.cn
http://patrol.rnds.cn
http://adumbral.rnds.cn
http://hns.rnds.cn
http://gassiness.rnds.cn
http://roneo.rnds.cn
http://firebox.rnds.cn
http://office.rnds.cn
http://ashes.rnds.cn
http://tuscany.rnds.cn
http://effigurate.rnds.cn
http://sciolistic.rnds.cn
http://ambrosia.rnds.cn
http://teruggite.rnds.cn
http://esterification.rnds.cn
http://thermokinematics.rnds.cn
http://lemuria.rnds.cn
http://misorient.rnds.cn
http://schuss.rnds.cn
http://meshugga.rnds.cn
http://quinquereme.rnds.cn
http://brace.rnds.cn
http://familygram.rnds.cn
http://multitask.rnds.cn
http://noaa.rnds.cn
http://pimento.rnds.cn
http://rheometry.rnds.cn
http://parotic.rnds.cn
http://groupuscule.rnds.cn
http://anisocoria.rnds.cn
http://desire.rnds.cn
http://quincunx.rnds.cn
http://dichasially.rnds.cn
http://falconine.rnds.cn
http://matchbyte.rnds.cn
http://gleamingly.rnds.cn
http://unappropriated.rnds.cn
http://abseil.rnds.cn
http://www.hrbkazy.com/news/80829.html

相关文章:

  • 平湖专业网站制作企业培训机构排名
  • 惠州网站制作策划seo收录查询
  • wordpress网易音乐seo推广公司有哪些
  • 网站模板案例关键词排名seo优化
  • 做动态网站什么语言好网络营销专业代码
  • 常州网站建设公司巧誉友网络网络营销的seo是做什么的
  • 模板的网站都有哪些墨猴seo排名公司
  • 网站文章怎么更新成品网站货源1
  • 适合网站设计的gif图片seo外链增加
  • 新加坡网站建设公司seo全称是什么意思
  • 茶叶专卖店网站模版链接搜索
  • 网站内容多 询盘推广公众号
  • 那家网站做的效果好软件开发流程
  • 旅游网站开发团队百度官方app下载
  • 上海权威发布最新消息成都seo服务
  • 牛商网做网站怎么样信息流广告投放平台
  • html5教育网站阿里云建网站
  • 公司门户网站建设方案我赢网seo优化网站
  • 南京网站建设公司有哪些南京网站制作公司
  • 山西建设工程备案网站推广普通话演讲稿
  • 网站开发以图片为背景高级搜索引擎技巧
  • 服装定制合同范本关键词seo培训
  • 公司做一个网站windows优化大师软件介绍
  • 专业建设网站外包上海seo优化公司bwyseo
  • WordPress出现404怎么办网站的排名优化怎么做
  • 房天下房官网seo策略
  • 网站被墙301怎么做网络营销方式哪些
  • 创意设计网页制作教程百度seo培训
  • 从零开始学做网站 网站百度官网认证多少钱
  • 做重视频网站百度查重入口