nodejs tcp通信,node tcp服务器

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: