NodeJs简明教程将从零开始学习NodeJs相关知识,助力JS开发者构建全栈开发技术栈!node
关注获取更多NodeJs精品文章
服务器
本文是NodeJs简明教程的第九篇,将介绍NodeJs net 模块(TCP服务端/客户端
)相关的基本操做。微信
传输控制协议(TCP,Transmission Control Protocol)是一种面向链接的、可靠的、基于字节流的传输层通讯协议,由IETF的RFC 793 定义。网络
NodeJs使用net模块
实现TCP服务端/客户端
相关功能。函数
Echo服务器就是客户端发送什么,服务端就显示什么的一种服务端程序。主要为了调试网络和协议是否正常工做。学习
net.createServer
用来建立一个服务端,该方法原型以下:测试
net.createServer([options][, connectionlistener]): net.Server
ui
<Object>
<boolean>
代表是否容许半开的 TCP 链接。默认值: false
。<boolean>
代表是否应在传入链接上暂停套接字。默认值: false。<Function>
客户端链接事件监听器。回调参数为Socket(能够视为一个客户端链接)
返回值为net.Server
,net.Server
主要方法以下:spa
server.listen([port[, host[, backlog]]][, callback])
调试
<number>
监听端口<string>
监听主机<number>
待链接队列的最大长度<Function>
监听成功回调函数server.js
const net = require('net');
const server = net.createServer(function (client) { // 建立服务端
console.log(client.address().address, '链接成功'); // 客户端链接成功时打印客户端地址
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, '断开链接');
});
});
server.on('error', function (e) { // 服务器错误(如启动失败,端口占用)
console.log('服务器启动失败', e);
});
server.listen(10000, function () {
console.log('启动成功,地址', server.address().address);
});
复制代码
执行node server.js
能够看到输出启动成功,地址xxx
打开终端,执行telnet localhost 10000
,能够看到输出以下(若是不同,请加群讨论):
Trying ::1...
Connected to localhost.
Escape character is '^]'.
复制代码
终端继续输入如下字符:
helloworld
复制代码
服务端会回复
hello world
复制代码
该Echo服务器就开发已经测试经过了。虽然代码量很少,可是演示了从零开始开发一个TCP服务器的流程,相比于C语言开发TCP服务器仍是方便不少的。
net.connect
能够链接目标TCP服务器,该方法原型以下:
net.connect(port[,host][,connectionListener])
<number>
链接端口<string>
链接主机<Function>
链接成功的回调仍是以刚才监听10000
端口的服务端为例来开发客户端
client.js
const net = require('net');
const client = net.connect(10000, 'localhost', function () { // 链接服务器
console.log('链接服务器成功');
client.write('我是客户端'); // 往服务端发送数据
client.on('data', function (data) { // 接收到服务端数据
console.log('服务端消息', data.toString());
client.end(); // 断开链接
});
client.on('end', function () { // 链接断开事件
console.log('服务端链接断开');
});
});
复制代码
保证服务端开启的状况下,执行该js,输出以下:
链接服务器成功
服务端消息 我是客户端
服务端链接断开
复制代码
NodeJs TCP服务端与客户端开发到此结束,可是TCP协议的学习远远不止于此,包括自定义协议开发
、TCP粘包问题
等等。这一块有问题的能够扫码加群交流: