当前位置: 首页 > 后端技术 > Node.js

NodeJs简明教程(9)

时间:2023-04-03 16:33:47 Node.js

NodeJs简明教程将从零开始学习NodeJs相关知识,帮助JS开发者搭建全栈开发技术栈!更多NodeJs精品文章关注本文是NodeJs简明教程的第九篇,将介绍NodeJsnet模块(TCP服务器/客户端)相关的基本操作。什么是TCP传输控制协议(TCP,TransmissionControlProtocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793定义。NodeJs使用net模块来实现TCP服务器/客户端相关功能。Echo服务器开发Echo服务器是一个服务器程序,显示客户端发送的内容和服务器显示的内容。主要调试网络和协议是否正常。net.createServer用于创建服务器。该方法的原型如下:net.createServer([options][,connectionlistener]):net.ServeroptionsallowHalfOpen表示是否允许半开TCP连接。默认值:假。pauseOnConnect指示套接字是否应在传入连接时暂停。默认值:假。connectionListener客户端连接事件监听器。回调参数为Socket(可以看做客户端连接),返回值为net.Server。net.Server的主要方法如下:server.listen([port[,host[,backlog]]][,callback])port监听端口host监听主机backlog的最大长度待连接队列回调监听成功回调函数server.jsconstnet=require('net');constserver=net.createServer(function(client){//创建服务器console.log(client.address().address,'connectionsuccessful');//客户端连接成功时打印客户端地址client.on('error',function(e){console.log(client.address().address,'error>>',e.message);//当连接错误时(如客户端异常断开)});client.on('data',function(data){//接收客户端数据console.log(client.address().address,'>>',data.toString());client.write(data);//向客户端写入数据});client.on('end',function(){//客户端正常断开console.log(client.address().address,'disconnected');});});server.on('error',function(e){//服务器错误(如启动失败,端口占用)console.log('服务器启动失败',e);});server.listen(10000,function(){console.log('启动成功,地址',server.address().address);});执行nodeserver.js,可以看到输出启动成功。打开地址为xxx的终端,执行telnetlocalhost10000,可以看到输出如下(如有不同,请进群讨论):Trying::1...Connectedtolocalhost.Escapecharacteris'^]'.终端继续输入以下字符:helloworldserver会回复helloworld。Echo服务器已经开发和测试。虽然代码量不多,但是演示了从头开发TCP服务器的过程,比用C语言开发TCP服务器要方便的多。TCP客户端net.connect可以连接到目标TCP服务器。该方法的原型如下:net.connect(port[,host][,connectionListener])port连接端口host连接主机connectionListener连接成功回调还是取服务器监听端口刚才以10000为例开发客户端client.jsconstnet=require('net');constclient=net.connect(10000,'localhost',function(){//连接服务器控制台.log('连接服务器成功');client.write('我是客户端');//向服务器发送数据client.on('data',function(data){//接收服务器数据console.log('服务器消息',data.toString());client.end();//断开连接});client.on('end',function(){//断开连接事件console.log('服务器连接断开');});});开启服务器后,执行js,输出如下:连接服务器成功。服务器消息我是客户端,服务器连接断开。服务端和客户端开发到此结束,但是TCP协议的学习远不止于此,包括自定义协议开发,TCP粘包问题等等。如果本区有问题,可以扫码进群交流: