广告
返回顶部
首页 > 资讯 > 精选 >nodejs中net模块有什么用
  • 511
分享到

nodejs中net模块有什么用

2023-06-09 09:06:57 511人浏览 八月长安
摘要

这篇文章将为大家详细讲解有关nodejs中net模块有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。tcp服务在网络应用中十分常见,目前大多数的应用都是基于TCP搭建而成的。net模块提供了一个异步

这篇文章将为大家详细讲解有关nodejs中net模块有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

tcp服务在网络应用中十分常见,目前大多数的应用都是基于TCP搭建而成的。net模块提供了一个异步网络包装器,用于TCP网络编程,它包含了创建服务器和客户端的方法。本文将详细介绍nodejs中的net模块。

IP测试

【net.isIP(input)】

  测试是否输入的为 IP 地址。字符串无效时返回 0。 IPV4 情况下返回 4, IPV6情况下返回 6

var net = require('net');console.log(net.isIP('1.1.1.1'));//4console.log(net.isIP('1.1'));//0console.log(net.isIP('AD80::ABAA:0000:00C2:0002'));//6

【net.isIPv4(input)】

  如果输入的地址为 IPV4, 返回 true,否则返回 false

var net = require('net');console.log(net.isIPv4('1.1.1.1'));//trueconsole.log(net.isIPv4('1.1'));//false

【net.isIPv6(input)】

  如果输入的地址为 IPV6, 返回 true,否则返回 false

var net = require('net');console.log(net.isIPv6('1.1.1.1'));//trueconsole.log(net.isIPv6('AD80::ABAA:0000:00C2:0002'));//true

服务器

【net.createServer([options][, connectionListener])】

  创建一个 TCP 服务器,参数如下

options    allowHalfOpen: false(默认),如果为true,当另一端Socket发送FIN包时socket不会自动发送FIN包。socket变为不可读但可写(半关闭)    pauseOnConnect: false(默认),如果为true,当连接到来的时候相关联的socket将会暂停。它允许在初始进程不读取数据情况下,让连接在进程间传递。调用resume()从暂停的socket里读取数据connectionListener 自动给 'connection' 事件创建监听器
var server = net.createServer(function() {});

【server.listen(port[, host][, backlog][, callback])】

  开始接受指定端口port和主机host的连接。如果忽略主机host,服务器将会接受任何IPv4地址(INADDR_ANY)的直接连接。端口为0,则会分配一个随机端口

  积压量(Backlog)为连接等待队列的最大长度。实际长度由操作系统通过sysctl设定,比如linux上的tcp_max_syn_backlog和somaxconn。这个参数默认值是511

  当服务器被绑定时会触发'listening'事件。最后一个参数callback将会作为'listening'事件的监听器

  有些用户会遇到EADDRINUSE错误,它表示另外一个服务器已经运行在所请求的端口上。处理这个情况的办法是等一段时间后再重试

server.listen(6000);

【server.close([callback])】

  服务器停止接收新的连接,保持现有连接。当所有连接结束的时候服务器会关闭,并会触发'close'事件。你可以传一个回调函数来监听'close'事件。如果存在,将会调用回调函数,错误(如果有)作为唯一参数

【server.address()】

  操作系统返回绑定的地址、协议族名和服务器端口。查找哪个端口已经被系统绑定时,非常有用

  [注意]在 'listening' 事件触发前,不要调用 server.address()

server.listen(function() {    //{ address: '::', family: 'IPv6', port: 53806 }    console.log(server.address());});

【server.maxConnections】

  设置这个选项后,当服务器连接数超过数量时拒绝新连接

  一旦已经用 child_process.fork() 方法将 socket 发送给子进程, 就不推荐使用这个选项

【server.getConnections(callback)】

  异步获取服务器当前活跃连接的数量。当 socket 发送给子进程后才有效;

  回调函数有 2 个参数 err 和 count

server.getConnections(function(err,count){    console.log(count);//0})

【事件listening】

  当服务器调用 server.listen 绑定后会触发

【事件connection】

{Socket object} 连接对象

  当新连接创建后会被触发。socket 是 net.Socket实例

【事件close】

  服务器关闭时会触发

  [注意]如果存在连接,这个事件不会被触发直到所有的连接关闭

【事件error】

  发生错误时触发

客户端

【net.connect(options[, connectionListener])】

【net.createConnection(options[, connectionListener])】

  connect()的别名是createConnection()方法

  该方法返回一个新的 'net.Socket',并连接到指定的地址和端口。当 socket 建立的时候,将会触发 'connect' 事件。和'net.Socket'有相同的方法

  对于 TCP sockets,参数options如下

port: 客户端连接到 Port 的端口(必须)host: 客户端要连接到得主机。默认 'localhost'localAddress: 网络连接绑定的本地接口localPort: 网络连接绑定的本地端口family : IP 栈版本。默认 4

  对于本地域socket,参数options如下

path: 客户端连接到得路径(必须)
var client = net.connect({port: 5000}, function() {});

Socket

【new net.Socket([options])】

  构造一个新的 socket 对象

  options 对象有以下默认值:

{ fd: null  allowHalfOpen: false,  readable: false,  writable: false}

  参数fd允许指定一个存在的文件描述符。将readable和(或)writable设为true,允许在这个socket上读或写(仅在参数fd有效时)

【socket.connect(port[, host][, connectListener])】

【socket.connect(path[, connectListener])】

  使用传入的socket打开一个连接。如果指定了端口port和主机host,TCP socket将打开socket。如果忽略参数host,则默认为localhost。如果指定了path,socket将会被指定路径的unix socket 打开

  参数 connectListener 将会作为监听器添加到 'connect' 事件

【socket.write(data[, encoding][, callback])】

  在socket上发送数据。第二个参数指定了字符串的编码,默认是UTF8编码

  如果所有数据成功刷新到内核缓冲区,返回true。如果数据全部或部分在用户内存里,返回false。当缓冲区为空的时候会触发'drain'

  当数据最终被完整写入的的时候,可选的callback参数会被执行,但不一定会马上执行

【socket.end([data][, encoding])】

  半关闭socket。例如,它发送一个FIN包。可能服务器仍在发送数据。

  如果参数data不为空,等同于调用socket.write(data,encoding)后再调用socket.end()

【socket.destroy()】

  确保没有 I/O 活动在这个套接字上。只有在错误发生情况下才需要

【socket.pause()】

  暂停读取数据。就是说,不会再触发 data 事件。对于控制上传非常有用

【socket.resume()】

  调用 pause() 后想恢复读取数据

【socket.setTimeout(timeout[, callback])】

  socket 闲置时间超过 timeout 毫秒后 ,将 socket 设置为超时。触发空闲超时事件时,socket 将会收到 'timeout'事件,但是连接不会被断开。用户必须手动调用 end() 或 destroy() 这个socket。

  如果 timeout = 0, 那么现有的闲置超时会被禁用。可选的 callback 参数将会被添加成为 'timeout' 事件的一次性监听器

【socket.setNoDelay([noDelay])】

  禁用纳格(Nagle)算法。默认情况下 TCP 连接使用纳格算法,在发送前他们会缓冲数据。将 noDelay 设置为 true 将会在调用 socket.write() 时立即发送数据。noDelay 默认值为 true

【socket.seTKEepAlive([enable][, initialDelay])】

  禁用/启用长连接功能,在发送第一个在闲置socket上的长连接probe之前,可选地设定初始延时。默认false

  设定initialDelay(毫秒),来设定收到的最后一个数据包和第一个长连接probe之间的延时。将 initialDelay 设为0,将会保留默认(或者之前)的值。默认值为0

【socket.address()】

  操作系统返回绑定的地址,协议族名和服务器端口。返回的对象有 3 个属性,比如{ port: 12346, family: 'IPv4', address: '127.0.0.1' }

【socket.remoteAddress】

  远程的 IP 地址字符串

【socket.remoteFamily】

  远程IP协议族字符串

【socket.remotePort】

  远程端口,数字表示

【socket.localAddress】

  远程客户端正在连接的本地IP地址,字符串表示

【socket.localPort】

  本地端口地址,数字表示

【socket.bytesRead】

  接收的字节数

【socket.bytesWritten】

  发送的字节数

【事件lookup】

  在解析域名后,但在连接前,触发这个事件。对 UNIX sokcet 不适用

err {Error | Null} 错误对象address {String} IP 地址。family {String | Null} 地址类型

【事件connect】

  当成功建立 socket 连接时触发、

【事件data】

{Buffer object}

  当接收到数据时触发。参数 data 可以是 Buffer 或 String

  当 Socket 触发一个 'data' 事件时,如果没有监听器,数据将会丢失

【事件end】

  当 socket 另一端发送 FIN 包时,触发该事件

【事件timeout】

  当 socket 空闲超时时触发,仅是表明 socket 已经空闲。用户必须手动关闭连接

【事件drain】

  当写缓存为空得时候触发。可用来控制上传

【事件error】

  错误发生时触发

【事件close】

had_error {Boolean} 如果 socket 传输错误,为 true

  当 socket 完全关闭时触发。参数 had_error 是 boolean,它表示是否因为传输错误导致 socket 关闭

简易服务器

【服务器】

//server.jsvar net = require('net') ;var server = net.createServer(function(socket) {     socket.write("Hi!\n");    socket.on("data", function(data) {      console.log(data.toString());    });    socket.on("end", function() {      console.log('有客户机下线了!!!');    });    socket.on('error', function() {      console.log('发生意外错误!!!');    });}) ;server.listen(8080) ;

【客户机】

//client.jsvar net = require('net') ;var client = net.connect({port: 8080},function(){    client.name = '客户机1';    client.write(client.name + ' 上线了!\n');    client.end(client.name + ' 下线了!\n');    client.on("data", function(data) {        console.log(data.toString());    });});

nodejs中net模块有什么用

简易聊天室

【服务器】

//chatServer.jsvar net = require('net');var i = 0;//保存客户机var clientList = [];var server = net.createServer(function(socket) {    socket.name = '用户' + (++i);    socket.write('【聊天室提示】欢迎' + socket.name + '\n');    //更新客户机数组    clientList.push(socket);     function showClients(){        console.log('【当前在线用户】:');        for(var i=0;i<clientList.length;i++) {             console.log(clientList[i].name);        }            }    showClients();    socket.on("data", function(data) {        //把当前连接的客户机的信息转发到其他客户机          for(var i=0;i<clientList.length;i++) {             if(socket !== clientList[i]) {                      clientList[i].write('【' + socket.name + '】:' + data);               }          }    });    socket.on("close", function() {        //当前客户机下线时,将其从客户机数组中移除        clientList.splice(clientList.indexOf(socket), 1);        showClients();    });    socket.on('error', function(err) {        console.log(socket.name + '退出');    });});server.listen(8080) ;

【客户机】

//chatClient.jsvar net = require('net');process.stdin.resume();process.stdin.setEncoding('utf8');var client = net.connect({port: 8080},function(){    console.log('【本机提示】登录到聊天室');    process.stdin.on('data',function(data){        client.write(data);    })    client.on("data", function(data) {        console.log(data.toString());    });    client.on('end', function() {        console.log('【本机提示】退出聊天室');        process.exit();    });    client.on('error', function() {        console.log('【本机提示】聊天室异常');        process.exit();    });});

nodejs中net模块有什么用

关于“nodejs中net模块有什么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: nodejs中net模块有什么用

本文链接: https://www.lsjlt.com/news/255480.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • nodejs中net模块有什么用
    这篇文章将为大家详细讲解有关nodejs中net模块有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。TCP服务在网络应用中十分常见,目前大多数的应用都是基于TCP搭建而成的。net模块提供了一个异步...
    99+
    2023-06-09
  • Nodejs中的net模块怎么用
    这篇文章主要介绍了Nodejs中的net模块怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Nodejs中的net模块怎么用文章都会有所收获,下面我们一起来看看吧。1. O...
    99+
    2022-10-19
  • nodejs中queryString模块有什么用
    这篇文章给大家分享的是有关nodejs中queryString模块有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。无论是前端还是后端,经常出现的应用场景是URL中参数的处理。nodeJS的queryStri...
    99+
    2023-06-06
  • nodejs模块化有什么作用
    本篇内容主要讲解“nodejs模块化有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“nodejs模块化有什么作用”吧! no...
    99+
    2022-10-19
  • nodejs有什么内置模块
    本篇内容主要讲解“nodejs有什么内置模块”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“nodejs有什么内置模块”吧! node...
    99+
    2022-10-19
  • nodejs模块与包有什么作用
    今天小编给大家分享一下nodejs模块与包有什么作用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2022-10-19
  • 什么是nodejs模块
    本篇内容介绍了“什么是nodejs模块”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-19
  • Node中的net模块是什么
    本文小编为大家详细介绍“Node中的net模块是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Node中的net模块是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1. OSI 七层协议模型想要学明白通...
    99+
    2023-07-05
  • Nodejs中Buffer模块的用法是什么
    这篇文章主要介绍“Nodejs中Buffer模块的用法是什么”,在日常操作中,相信很多人在Nodejs中Buffer模块的用法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2022-10-19
  • Nodejs中cluster模块的作用是什么
    这期内容当中小编将会给大家带来有关Nodejs中cluster模块的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。code1const cluster...
    99+
    2022-10-19
  • nodejs模块怎么用
    Node.js 是一套基于事件驱动、异步 I/O 的开源跨平台 JavaScript 运行时环境。在 Node.js 中,使用模块来组织代码,每个模块都是一个独立的文件,可以通过导入/导出进行模块间调用和逻辑复用。本文将介绍 Node.js...
    99+
    2023-05-18
  • nodejs常用模块有哪些
    Node.js常用的模块有:1. http:用于创建HTTP服务器和处理HTTP请求2. fs:用于文件系统操作,包括读取、写入、删...
    99+
    2023-10-10
    nodejs
  • nodejs中模块化指的是什么
    这篇“nodejs中模块化指的是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“node...
    99+
    2022-10-19
  • nodejs官方模块是什么
    这篇文章主要介绍了nodejs官方模块是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 nodejs官方模块...
    99+
    2022-10-19
  • nodejs中url模块怎么使用
    这篇文章主要介绍了nodejs中url模块怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇nodejs中url模块怎么使用文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2022-10-19
  • Nodejs-cluster模块怎么用
    这篇文章给大家分享的是有关Nodejs-cluster模块怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。基本用法Node.js默认单进程运行,对于32位系统最高可以使用51...
    99+
    2022-10-19
  • nodejs中的http模块与npm模块使用
    目录http模块创建服务器基本步骤request对象详解response对象详解实现静态WEB服务器服务器响应首页根据根据不同url,响应不同文件静态资源的通用处理npm - Nod...
    99+
    2022-11-13
    nodejs中http模块 nodejs中npm模块 http模块与npm模块使用
  • nodejs中events模块怎么办
    这篇文章将为大家详细讲解有关nodejs中events模块怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。events模块是node的核心模块,几乎所有常用的node模块都继承了events模块,比如...
    99+
    2023-06-06
  • Nodejs中有哪些Buffer模块的API
    这篇文章给大家介绍Nodejs中有哪些Buffer模块的API,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。模块概览Buffer是node的核心模块,开发者可以利用它来处理二进制数据,比如文件流的读写、网络请求数据的处...
    99+
    2023-06-15
  • Nodejs中的buffer模块怎么使用
    这篇文章主要介绍“Nodejs中的buffer模块怎么使用”,在日常操作中,相信很多人在Nodejs中的buffer模块怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作