esp8266学习笔记⑦:服务器及客户端的搭建(net模块)

Net模块

nodemcuNet模块主要是用于两个或多个开发板之间,开发板与电脑、手机之间的通信。实现它们之间的信息传递。
Net模块中有两种通信传输协议TCPUDP,这两种协议各有优缺点。
TCP:对系统资源要求较多,工作效率没有UDP高,且每条TCP连接只能进行点对点的传递,但是它的传输数据的可靠性高,无差错,不丢失,不重复,且按序到达。
UDP:对系统资源要求相对较少,具有较好的实时性,可以进行一对一一对多多对一之间的信息传送,但是不能保证数据的可靠性,适用于对高速传输和实时性有较高的通信或广播通信。

本章内容只讲解TCP协议,通过创建服务器和客户端进行相互通信。

TCP的主要函数

net.createConnection()
功能:创建一个客户端
语法:net.createConnection(type, secur)
参数:
type:模式选择net.TCPnet.UDP,默认为net.TCP
secur1——加密模式,0——普通模式(默认)

示例:

net.createConnection(net.TCP,0)

net.createServer()
功能:创建服务器
语法:net.createServer(type, timeout)
参数:
type:模式选择net.TCPnet.UDP,默认为net.TCP
timeoutTCP服务器的超时时间1~28'800秒,默认为30秒,对于超过30s不活动的客户端断开连接

示例:

net.createServer(net.TCP, 30) 

Net函数的访问接口

接口功能
close()关闭服务器或客户端
listen(port,ip,function(net.socket))从IP地址监听端口
getaddr()返回服务器本地地址/端口
connect(port, ip/domain)连接到远程服务器
on(event, function())为特定事件注册回调函数
send(string, function(sent))向远程对等端发送数据
dns(domain, function(net.socket, ip))为主机名提供DNS解析

close()
语法:close()
参数:无
返回值:nil

listen()
语法:listen(port,ip,function(net.socket))
参数:
port:端口号,可以省略(随机端口将被选择)
ip:IP地址字符串,可以省略
function(net.socket):回调函数,如果成功创建连接,则可以传递给调用方函数
返回值:nil

getaddr()
语法:getaddr()
参数:无
返回值: 端口号IP(如果没有侦听,则为nilnil)

connect()
语法:connect(port, ip/domain)
参数:
port:端口号
ip/domainIP地址域名字符串,如:198.164.164.111www.baidu.com
返回值:nil
on()
语法:on(event, function())
参数:
event:事件字符串,可以是connection(连接)、reconnection(重新连接)、disconnection(断开连接)、receive(接收)或sent(发送)
function():回调函数,可以为nil来删除回调。回调的第一个参数是套接字。如果事件 是“receive”,则第二个参数是以string字符串形式接收的数据。如果事件是“disconnection”或“reconnection”,则第二个参数是错误代码。
返回值:nil

send()
语法:send(string, function(sent))
参数:
string:发送到服务器或客户端的字符串数据
function(sent):用于发送字符串的回调函数
返回值:nil

dns()
语法:dns(domain, function(net.socket, ip))
参数:
domain:域名字符串
function(net.socket, ip):回调函数,第一个参数是套接字,第二个参数是作为字符串的IP地址
返回值:nil

服务器和客户端的程序例程

服务器的程序

sv=net.createServer(net.TCP, 30)	--创建一个服务器,客户端连接后30s内没有通信自动断开客户端
sv:listen(80,function(khd)	--监听80端口,当有客户端连接后,创建客户端对象“khd”
  c:on("receive", function(khd, msg)	--当接收到客户端发送过来的消息触发此函数
    print(msg)	--打印接收到的消息
  end)
  c:send("hello world")		--向客户端发送消息“hello world”
  c:close()	--断开客户端的连接
end)

客户端的程序

sk=net.createConnection(net.TCP, 0)		--创捷一个tcp客户端
sk:connect(80,"IP地址")		--连接IP地址和端口80
sk:on("receive",  function(sv, c)		--当接收到服务器发送过来的消息是触发此函数
    print(c)		--打印接收到的消息
end )
sk:send("hello world")		--向服务器发送数据
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值