nodejs tcp通信,node tcp服务器
如何使用Node.js进行TCP网络通信?下面这篇文章将带你了解使用Node.js进行TCP网络通信的方法希望对你有所帮助!
node.js速度课程简介:进入学习
1、构建TCP服务器
1.1、使用Node.js创建TCP服务器
为了使用Node.js创建TCP服务器,首先调用require (net )来加载net模块,然后调用net模块的createServer方法来轻松创建TCP服务器。语法格式如下:
net . create server([选项][,connectionListener])
Options是一个对象参数值,有两个布尔属性,allowHalfOpen和pauseOnConnect。这两个属性是假的;默认情况下;
ConnectionListener是客户端与服务器建立连接时的回调函数。这个回调函数将套接字端口对象作为参数。1.2、监听客户端的连接
使用TCP服务器的listen方法开始监控客户端的连接。语法格式如下:
server.listen(端口[,主机][,backlog][,回调]);
Port:是要监控的端口号;当参数值为0时,将随机分配一个端口号;
主机:服务器地址;
Backlog:连接等待队列的最大长度;
回调:回调函数。以下代码可以创建一个TCP服务器并侦听端口8001:
//介绍net模块
const net=require( net );
//创建TCP服务器
const server=net.createServer(函数(套接字){
Console.log(有新的客户端访问);
});
//设置监听端口
server.listen(8001,function () {
Console.log(服务正在侦听。)
});运行这段代码,可以在控制台看到listen方法的回调函数,如图:
您可以使用相应的TCP客户端或调试工具来连接到这个创建的TCP服务器。例如,要使用Windows的Telnet,您可以使用以下命令进行连接:
Telnet主机8001连接成功后,可以看到控制台打印出“有新的客户端访问”字样,表示已经执行了createServer方法的回调函数,表示已经成功连接到这个创建的TCP服务器。
server.listen()方法实际上触发了服务器下的监听事件,因此您也可以手动监控监听事件。代码如下:
//设置监听端口
server . listen(8001);
//设置监听时的回调函数。
server.on(listening ,function () {
Console.log(服务正在侦听。)
});除了监听事件,TCP服务器还支持以下事件:
连接:创建新链接时触发。回调函数的参数是套接字连接对象。
关闭:当TCP服务器关闭时触发。回调函数没有参数。
Error:当TCP服务器中出现错误时触发。回调函数的参数是错误对象。下面的代码通过网络创建一个TCP服务器。服务器类并添加上述事件:
//介绍net模块
const net=require( net );
//实例化服务器对象
常量服务器=新网络。server();
//侦听连接事件
server.on(连接,函数(套接字){
Console.log(有新的客户端访问);
});
//设置监听端口
server . listen(8001);
//设置监听时的回调函数。
server.on(listening ,function () {
Console.log(服务正在侦听。);
});
//设置关闭时的回调函数
server.on(close ,function () {
Console.log(服务关闭);
});
//设置出错时的回调函数。
server.on(error ,function (err) {
Console.log(异常服务操作,err);
});1.3、查看服务器监听的地址
创建TCP服务器时,可以通过server.address()方法检查TCP服务器监听的地址,并返回一个JSON对象。因为此方法返回TCP服务器侦听的地址信息,所以应该在调用server.listen()方法或绑定事件侦听中的回调函数时调用它。该对象的属性是:
port:TCP服务器监听的端口号;
Family:说明TCP服务器侦听的地址是IPv6还是IPv4;
地址:TCP服务器监听的地址。代码如下:
//介绍net模块
const net=require( net );
//创建TCP服务器
const server=net.createServer(函数(套接字){
Console.log(有新的客户端访问);
});
//设置监听端口
server . listen(8001);
//设置监听时的回调函数。
server.on(listening ,function () {
//获取地址信息
let address=server . address();
//获取地址详细信息
Console.log(服务器监听的端口是: address . port );
Console.log(服务器监听的地址是: address . address );
Console.log(服务器监听的地址类型为: address . family );
});运行结果如图所示:
1.4、连接服务器的客户端数量
创建TCP服务器后,可以通过server.getConnections()方法获得连接到该TCP服务器的客户端数量。这个方法是一个异步方法,回调函数有两个参数:
第一个参数是错误对象。
第二个参数是连接到TCP服务器的客户端数量。除了获取连接数之外,还可以通过设置该TCP服务器的maxConnections属性来设置该TCP服务器的最大连接数。当连接数超过最大数量时,服务器将拒绝新的连接。以下代码将该TCP服务器的最大连接数设置为3。
//介绍net模块
const net=require( net );
//创建TCP服务器
const server=net.createServer(函数(套接字){
Console.log(有新的客户端访问);
//设置最大连接数
server . max connections=3;
server . get connections(function(err,count) {
Console.log(当前连接的客户端数量为: count );
});
});
//设置监听端口
server.listen(8001,function () {
Console.log(服务正在侦听。)
});运行此代码并尝试连接多个客户端。可以发现,当客户端连接数超过3时,新客户端无法连接到该服务器,如图所示:
1.5、获取客户端发送的数据
createServer方法的回调函数参数是一个网络。套接字对象(服务器监听的端口对象)。这个对象还有一个address()方法,用于获取TCP服务器绑定的地址。它还返回一个具有端口、系列和地址属性的对象。可以通过socket对象获取客户端发送的流数据,并在每次接收数据时触发data事件。通过监视该事件,您可以在回调函数中获取客户端发送的数据。代码如下:
//介绍net模块
const net=require( net );
//创建TCP服务器
const server=net.createServer(函数(套接字){
//侦听数据事件
socket.on(data ,function (data) {
//打印数据
Console.log(接收的数据: data . tostring());
});
});
//设置监听端口
server.listen(8001,function () {
Console.log(服务正在侦听。)
});测试结果如下:
除了数据事件,socket对象还有connect、end、error、timeout等事件。
1.6、发送数据给客户端
调用socket.write()可以让TCP服务器发送数据。这个方法只有一个必需的参数,就是要发送的数据;第二个参数是编码格式,这是可选的。同时,您可以为此方法设置一个回调函数。当用户连接到TCP服务器时,数据将通过以下代码发送到客户端:
//介绍net模块
const net=require( net );
//创建TCP服务器
const server=net.createServer(函数(套接字){
//设置消息内容
const message=您好客户端.;
//发送数据
socket.write(消息,函数(){
const writeSize=socket . bytes written;
Console.log(数据发送成功,数据长度为: writeSize );
});
//侦听数据事件
socket.on(data ,function (data) {
const readSize=socket . bytes read;
//打印数据
Console.log(收到的数据是: data.toString(),;接收的数据长度为:‘readSize);
});
});
//设置监听端口
server.listen(8001,function () {
Console.log(服务正在侦听。)
});测试结果如下:
上面的代码中还使用了socket对象的bytesWritten和bytesRead属性,分别表示发送的数据字节数和接收的数据字节数。除了上述两个属性之外,套接字对象还具有以下属性:
Socket.localPort:本地端口的地址;
Socket.localAddress:本地IP地址;
Socket.remotePort:进程端口的地址;
Socket.remoteFamily:进程IP协议族;
Socket.remoteAddress:进程的IP地址。
2、构建TCP客户端
Node.js在创建TCP客户端时也使用net模块。
2.1、使用Node.js创建TCP客户端
为了使用Node.js创建TCP客户端,首先调用require (net )来加载net模块。要创建TCP客户端,您只需要创建一个连接到TCP客户端的套接字对象:
//介绍net模块
const net=require( net );
//创建TCP客户端
const client=新网络。socket();创建socket对象时,可以传入一个json对象。该对象具有以下属性:
Fd:指定一个已有的文件描述符,默认值为null;
可读:是否允许在此套接字上读取,默认值为false;
Writeable:该套接字上是否允许写入,默认值为false。
AllowHalfOpen:当该属性为false时,TCP服务器在收到客户端发送的FIN包后,会发回一个FIN包;当此属性为true时,TCP服务器在收到客户端发送的FIN数据包后不会回发FIN数据包。2.2、连接TCP服务器
创建socket对象后,可以通过调用socket对象的connect()方法连接到TCP服务器。代码如下:
//介绍net模块
const net=require( net );
//创建TCP客户端
const client=新网络。socket();
//设置连接的服务器
client.connect(8001, 127.0.0.1 ,function () {
Console.log(连接到服务器成功);
});下图显示了成功的连接:
2.3.获取从TCP服务器发送的数据
Socket有data、error、close、end等事件,因为你可以通过监听data事件得到TCP服务器发来的数据,代码如下:
//介绍net模块
const net=require( net );
//创建TCP客户端
const client=新网络。socket();
//设置连接的服务器
client.connect(8001, 127.0.0.1 ,function () {
Console.log(连接到服务器成功);
});
//侦听数据事件
client.on(data ,function (data) {
//打印数据
Console.log(收到的数据是: data . tostring());
});首先启动TCP服务器,然后运行上面的客户端。可以发现来自服务器的数据已经在命令行中输出,说明此时已经实现了服务器和客户端的通信:
2.4.向TCP服务器发送数据
因为TCP客户端是一个套接字对象,所以可以使用下面的代码向TCP服务器发送数据:
//介绍net模块
const net=require( net );
//创建TCP客户端
const client=新网络。socket();
//设置连接的服务器
client.connect(8001, 127.0.0.1 ,function () {
Console.log(连接到服务器成功);
//向服务器发送数据
client.write(Hello Server .);
});
//侦听数据事件
client.on(data ,function (data) {
//打印数据
Console.log(收到的数据是: data . tostring());
});
//侦听结束事件
client.on(end ,function () {
Console.log(“客户端发送数据结束”)
});客户端控制台输出:
服务器控制台输出:
至此,利用Node.js完成了TCP网络通信,如有不妥请指正。
有关编程的更多信息,请访问:编程视频!以上就是如何教你使用Node.js进行TCP网络通信的细节(练习)。请多关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。