JS在线运行

版本:

所属目录
点击了解高性能代码运行API
运行结果
教程手册
代码仓库
极速运行
终端运行
图形+终端

                        
以下是用户最新保存的代码
check in balalal 发布于:2025-04-26 17:54 最近一次给学姐的代码 发布于:2025-04-26 13:13 JS AES128加解密 发布于:2025-04-21 13:44 最小矩阵宽度(从第一列开始一列列加,直到判断子矩阵内包含数组的所有元素) 发布于:2025-04-16 19:10 最小交付时间(二分+回溯:先将数组排序,最小值start=Math.max(arr),最大值end = arr.reduce,回溯中创建一个新的工人数组,每次遍历数组时将数组中的每一个元素都尝试分配给worker[i]) 发布于:2025-04-16 18:53 阿里巴巴找黄金宝箱Ⅳ(单调栈:栈中存储单调递减的元素的集合,当找到比栈顶元素大的元素时,循环出栈直到栈顶元素不小于当前元素) 发布于:2025-04-15 17:47 找出经过特定点的路径长度(dfs+回溯) 发布于:2025-04-14 16:32 计算最接近的数(1.输入处理;2.对数组进行深拷贝,然后对新数组进行排序,之后在进行后续操作) 发布于:2025-04-14 15:11 MELON的难题(01背包问题:先判断数组和是否为偶数,如果为偶数直接输出-1,target=sum/2 状态转移方程dp[i]=Math.min(dp[i],dp[i-1]+1) 发布于:2025-04-11 17:29 简易内存池(模拟,双指针) 发布于:2025-04-11 17:12 通过软盘拷贝文件 这是一个典型的 0-1 背包问题的变体: 问题描述: 有一个容量为 1.44MB(1474560字节)的软盘 每个块大小为 512 字节 需要在有限容量内存储最大的文件字节总和 关键点: 文件大小以字节为单位 存储空间以块为单位 即使文件不足一个块,也要占用整个块的空间 动态规划解析: 状态定义:dp[i] 表示使用 i 个块时能存储的最大字节数 状态转移:对每个文件,可以选择放入或不放入 约束条件:总块数不能超过软盘容量 时间复杂度:O(n maxSize),其中: n 是文件数量 maxSize 是软盘最大块数(约2880块) 发布于:2025-04-11 16:39 正整数到excel编号之间的转换(对num先进行取余操作,取余之后的值就是字母a往后的偏移量,letter=String.fromCharCode('a'.charCodeAt(0)+remain),将这个字母放到结果队首,然后对num进行整除,循环直到num为0) 发布于:2025-04-10 17:46 最少交换次数(滑动窗口:先算出整个数组内<k的个数,作为窗口大小,然后再算出0-window内>=k的个数,作为res的初始值,然后滑动窗口,当arr[left]>=k时,res--,当arr[right]>=k时,res++) 发布于:2025-04-10 17:40 TLV解析 Ⅱ(字符串操作) 发布于:2025-04-10 16:24 最少有多少个小朋友了(相同的数字的个数/(相同个数+1)*(相同个数+1)) 发布于:2025-04-10 15:11 硬件产品销售方案(回溯 backtrack(path,val,sum)=>) 发布于:2025-04-09 18:40 猴子爬山(动态规划:状态转义方程dp[i]=dp[i-1]+dp[i-3]) 发布于:2025-04-09 18:14 检测工具代码 发布于:2025-04-09 18:03 检查是否存在满足条件的数字组合)(双指针,然后多重判断) 发布于:2025-04-09 17:45 阿里巴巴找黄金宝箱III(遍历数组,用map储存arr[i]上一次出现的下标,如果当前下标位置i-map.get(i)<=k,直接输出left) 发布于:2025-04-09 17:07 阿里巴巴找黄金宝箱II(数组排序,每次都找最大的减) 发布于:2025-04-09 16:48 全量和已占用字符集(字符串操作) 发布于:2025-04-09 16:34 微服务的集成测试(dfs:当扫描到第i行的第i个元素为1时,就递归dfs,sum+=Math.max(max,dfs(j))) 发布于:2025-04-09 16:25 经典屏保问题(判断是否反向:右下角坐标值为(x+50,y+25),当右下角撞到下面或者右边的墙时,就将x轴/y轴的移动方向反向,左上角同理。) 发布于:2025-04-08 18:37 阿里巴巴找黄金宝箱(I)(左右数组的和,如果左右数组的和相等,就输出) 发布于:2025-04-08 16:57 告警抑制(Map) 发布于:2025-04-08 16:35 过滤组合字符串(全排列:回溯) 发布于:2025-04-03 18:56 分糖果(判断是否为偶数,如果为偶数,操作次数+1,n=n/2;如果为奇数,判断(n+1)/2是否为偶数,如果是偶数,n=n+1,res++,否则n=n-1,res++) 发布于:2025-04-03 18:24 查找接口成功率最优时间段(用前缀和求出[left,right]区间的和,然后求平均值,和输入值比较,如果<=平均值,就移动右指针,如果>平均值,说明当前位置有一个当前最大的区间,比较这个区间是否为最大,如果不是则继续,如果是最大,则更新res结果;如果和当前的i最大值一样,那就将两个都放入到res中。最后,如果left和right不相等,说明最后一个窗口没处理完成,需要单独处理) 发布于:2025-04-03 18:15 游戏分组(dfs // 深度优先搜索函数 // 参数说明: // idx: 当前考虑的数组索引 // level: 当前已选择的数字个数 // subSum: 当前已选择数字的和 // totalSum: 整个数组的总和) 发布于:2025-04-03 17:18 新学校选址(找到一个数组排序后的中位数,如果是基数就是这个数,如果是偶数就是这个数的前一个数) 发布于:2025-04-03 16:38 绘图机器(从(0,0)到第一个点时,是先走横坐标,再走纵坐标,所以第一个点的面积应该为0) 发布于:2025-04-02 19:14 素数之积(判断是否为素数的函数:function isPrime(n) { if (n < 2) return false; for (let i = 2; i <= Math.sqrt(n); i++) { if (n % i === 0) return false; } return true; } 发布于:2025-04-02 17:43 考勤信息(滑动窗口统计七天之内的考勤状况) 发布于:2025-04-02 17:27 打印机队列(简单的数组模拟) 发布于:2025-04-02 16:29 JS AES128加解密 发布于:2025-04-03 15:28 找出重复代码】(二维动态规划:定义二维数组dp,初始值设为0,循环两个字符串,如果str1[i]=str2[j],dp[i+1][j+1]==dp[i][j]+1;使用maxLength定义当前最大的公共子串长度,如果dp[i+1][j+1]>maxLength,记录maxLength和当前结束位置i+1。循环后,根据maxLength和结束位置p,确定silce的范围 发布于:2025-04-01 19:24 【二叉树中序遍历】(用栈将二叉树的结构处理出来。然后中序遍历) 发布于:2025-04-01 19:08 【最小调整顺序次数】(模拟队列操作:当插入操作为头操作时,如果数组不为空,就不是排序状态。尾插入不影响;当移除元素时,如果当前队列是有序的 ,就不需要操作,否则就需要操作,ans++) 发布于:2025-04-01 18:29 二元组个数】(用map存储第一个数组中出现的元素及个数,然后遍历第二个数组,如果遇到map中的元素,ans+=map.get()) 发布于:2025-04-01 18:02 【文件目录大小】(递归:先读取每个文件的信息,解析每行输入的三个部分:id,size,child并将处理过后的放入files中,files:{id,size,child}。然后递归计算目标目录的大小:自定义一个递归函数 getSize,将目标目录设为root节点,向下递归子文件夹,如果有子文件夹就递归计算所有子节点的大小并累加,最后返回结果) 发布于:2025-04-01 17:49 华为OD机试真题 Python 实现【水库蓄水问题】(变体接雨水问题,用双指针遍历数组,然后将子数组内的每一个数字能接到的雨水相加(如果当前位置数字 小于左右边界的最小值,能够接水),如果有多个位置接的雨水相同,保留right-left最小的) 发布于:2025-04-01 17:23 找出两个整数数组中同时出现的整数】(用map存储第一个数组中的元素,然后再循环第二个数组,当遇到map中有的数字时,记录下这个数字。再创建新的Map,按出现次数分组存储数字// 获取当前数字及其在第一个数组中的出现次数// 将数字添加到对应次数的组中,并保持组内数字有序;// 获取所有出现次数并按升序排序// 按格式输出结果) 发布于:2025-04-01 16:47 模拟消息队列(两个数组,一个用来存消息,一个用来存接受者,接受者的中包括订阅时间取消时间和能接收到的消息,正序循环message数组,在逆序循环接受者数组,每当有发送消息的时间在订阅和取关之间时,把这个消息放到消息队列中) 发布于:2025-04-01 16:22 【投篮大赛】(简单字符串操作) 发布于:2025-04-01 16:05 【数值同化】(广度优先搜索,搜索能够到达的所有格子,然后遍历矩阵找出无法到达的地区) 发布于:2025-04-01 15:29 数字加减游戏(数学问题:先判断目标-初始是否能被b整除,如果能直接输出0.如果不能就每次判断初始值+a*x或初始值-a*x是否能整除b,如果能,就时最优解) 发布于:2025-04-01 15:10 数组二叉树(// 遍历树中的所有节点,寻找最小的叶子节点 // 判断当前节点是否为叶子节点,需满足以下条件: // 1. 节点值不为 -1(不是空节点) // 2. 节点值小于当前找到的最小叶子值 // 3. 左子节点不存在(超出数组范围或为-1) // 4. 右子节点不存在(超出数组范围或为-1) // 更新最小叶子节点的索引和值,找到叶子节点后,根据叶子节点不断向上推导出父节点,直到找到根节点。对于索引i,其父节点索引为 floor((i-1)/2)) 发布于:2025-04-01 14:56 【招聘】计算至少需要的面试官数量( // 核心算法思路: // 1. 首先对所有面试时间区间按开始时间排序 // 2. 检查相邻区间是否存在时间重叠 // 3. 对于重叠的区间,需要额外的面试官 // 4. 最后根据重叠情况和每个面试官的面试次数限制(m)计算所需面试官总数) 发布于:2025-03-31 18:44 查找一个有向网络的头节点和尾节点(读取输入数据并解析 统计每个节点的入度和出度 使用Map存储节点的入度和出度 每处理一条边,同时更新起点和终点的度数 入度为0的节点是起点 出度为0的节点是终点 终点需要降序排序 检查是否存在起点和终点 收集所有起点和终点 对终点进行排序 输出结果) 发布于:2025-03-31 17:51 [更多]
显示目录

网络



学习嵌入式的绝佳套件,esp8266开源小电视成品,比自己去买开发板+屏幕还要便宜,省去了焊接不当搞坏的风险。 蜂鸣版+触控升级仅36元,更强的硬件、价格全网最低。

点击购买 固件广场

网络

稳定性: 3 - 稳定

net模块提供了异步网络封装,该Node.js模块包含了创建服务器/客户端的方法(调用 streams),你可以通过调用 require('net') 包含这个模块,访问方法如下所示:

const net = require('net');

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

创建一个TCP服务器。参数connectionListener自动给'connection'事件创建监听器。

options包含有以下默认值:

{
  allowHalfOpen: false,
  pauseOnConnect: false
}

如果allowHalfOpen\=true,当另一端socket发送FIN包时,socket不会自动发送FIN包。socket变为不可读,但仍可写。你需要显式的调用end()方法。更多信息参见'end'事件。

如果pauseOnConnect\=true,当连接到来的时候相关联的socket将会暂停。它允许在初始进程不读取数据情况下,让连接在进程间传递。调用resume()从暂停的socket里读取数据。

下面是一个监听8124端口连接的应答服务器的例子:

var net = require('net');
var server = net.createServer(function(c) { //'connection' listener
  console.log('client connected');
  c.on('end', function() {
    console.log('client disconnected');
  });
  c.write('hello\r\n');
  c.pipe(c);
});
server.listen(8124, function() { //'listening' listener
  console.log('server bound');
});

使用telnet来测试:

telnet localhost 8124

要监听socket t/tmp/echo.sock,仅需要改倒数第三行代码,如下所示:

server.listen('/tmp/echo.sock', function() { //'listening' listener

使用nc连接到一个UNIX domain socket服务器:

nc -U /tmp/echo.sock

net.connect(options[, connectionListener])

net.createConnection(options[, connectionListener])

工厂方法,返回一个新的'net.Socket',并连接到指定的地址和端口。

当socket建立的时候,将会触发'connect'事件。

'net.Socket'有相同的方法。

对于TCP sockets,参数options因为下列参数的对象:

  • port: 客户端连接到Port的端口(必须)。

  • host: 客户端要连接到得主机。默认'localhost'.

  • localAddress: 网络连接绑定的本地接口。

  • localPort: 网络连接绑定的本地端口。

  • family : IP栈版本。默认4

对于本地域socket,参数options因为下列参数的对象:

  • path: 客户端连接到得路径(必须).

通用选项:

  • 如果allowHalfOpen\=true, 当另一端socket发送FIN包时socket不会自动发送FIN包。socket变为不可读,但仍可写。你需要显式的调用end()方法。更多信息参见'end'事件。

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

下面是一个用上述方法应答服务器的客户端例子:

var net = require('net');
var client = net.connect({port: 8124},
    function() { //'connect' listener
  console.log('connected to server!');
  client.write('world!\r\n');
});
client.on('data', function(data) {
  console.log(data.toString());
  client.end();
});
client.on('end', function() {
  console.log('disconnected from server');
});

要连接到socket/tmp/echo.sock,仅需将第二行代码改为如下的内容:

var client = net.connect({path: '/tmp/echo.sock'});

net.connect(port[, host][, connectListener])

net.createConnection(port[, host][, connectListener])

创建一个到端口port和主机host的TCP连接。如果忽略主机host,则假定为'localhost'。参数connectListener将会作为监听器添加到'connect'事件。

这是工厂方法,返回一个新的'net.Socket'

net.connect(path[, connectListener])

net.createConnection(path[, connectListener])

创建到path的unix socket连接。参数connectListener将会作为监听器添加到'connect'事件上。

这是工厂方法,返回一个新的'net.Socket'

Class: net.Server

这个类用来创建一个TCP或本地服务器。

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

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

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

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

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

server.on('error', function (e) {
  if (e.code == 'EADDRINUSE') {
    console.log('Address in use, retrying...');
    setTimeout(function () {
      server.close();
      server.listen(PORT, HOST);
    }, 1000);
  }
});

(注意:Node中的所有socket已设置了SO_REUSEADDR)

server.listen(path[, callback])

  • path {String}
  • callback {Function}

启动一个本地socket服务器,监听指定path的连接。

这是异步函数。绑定服务器后,会触发'listening'事件。最后一个参数callback将会作为'listening'事件的监听器。

UNIX上,本地域通常默认为UNIX域。参数path是文件系统路径,就和创建文件时一样,它也遵从命名规则和权限检查,并且在文件系统里可见,并持续到关闭关联。

Windows上,本地域通过命名管道实现。路径必须是以\\?\pipe\\\.\pipe\入口。任意字符串都可以,不过之后进行相同的管道命名处理,比如解决..序列。管道命名空间是平的。管道不会一直持久,当最后一个引用关闭的时候,管道将会移除。不要忘记javascript字符字符串转义要求路径使用双反斜杠,比如:

net.createServer().listen(
    path.join('\\\\?\\pipe', process.cwd(), 'myctl'))

server.listen(handle[, callback])

  • handle {Object}
  • callback {Function}

    handle 对象可以设置成server或socket(任意以下划线_handle开头的类),或者是{fd: <n>}对象。

这将是服务器用指定的句柄接收连接,前提是文件描述符或句柄已经绑定到端口或域socket。

Windows不支持监听文件句柄。

这是异步函数。当服务器已经被绑定,将会触发'listening'事件。最后一个参数callback将会作为'listening'事件的监听器。

server.listen(options[, callback])

  • options {Object} - 必须有。支持以下属性:
    • port {Number} - 可选。
    • host {String} - 可选。
    • backlog {Number} - 可选。
    • path {String} - 可选。
    • exclusive {Boolean} - 可选。
  • callback {Function} - 可选。

options的属性:端口port,主机host,和backlog,以及可选参数callback函数,他们在一起调用server.listen(port, [host], [backlog], [callback])。还有,参数path可以用来指定UNIX socket。

如果参数exclusivefalse(默认值),集群进程将会使用同一个句柄,允许连接共享。当参数exclusivetrue时,句柄不会共享,如果共享端口会返回错误。监听独家端口例子如下:

server.listen({
  host: 'localhost',
  port: 80,
  exclusive: true
});

server.close([callback])

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

server.address()

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

例如:

var server = net.createServer(function (socket) {
  socket.end("goodbye\n");
});

// grab a random port.
server.listen(function() {
  address = server.address();
  console.log("opened server on %j", address);
});

'listening'事件触发前,不要调用server.address()

server.unref()

如果这是事件系统中唯一一个活动的服务器,调用unref将允许程序退出。如果服务器已被unref,则再次调用unref并不会产生影响。

server.ref()

unref相反,如果这是唯一的服务器,在之前被unref了的服务器上调用ref将不会让程序退出(默认行为)。如果服务器已经被ref,则再次调用ref并不会产生影响。

server.maxConnections

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

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

server.connections

已经抛弃这个函数。请用server.getConnections()代替。服务器上当前连接的数量。

当调用child_process.fork()发送一个socket给子进程时,它将变为null。 要轮询子进程来获取当前活动连接的数量,请用server.getConnections代替。

server.getConnections(callback)

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

回调函数有2个参数errcount

net.Server是事件分发器EventEmitter, 有以下事件:

事件: 'listening'

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

事件:'connection'

  • {Socket object} 连接对象

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

事件: 'close'

服务器关闭时会触发。注意,如果存在连接,这个事件不会被触发直到所有的连接关闭。

事件: 'error'

  • {Error Object}

发生错误时触发。'close'事件将被下列事件直接调用。请查看server.listen例子。

Class: net.Socket

这个对象是TCP或UNIX Socket的抽象。net.Socket实例实现了一个双工流接口。他们可以在用户创建客户端(使用connect())时使用,或者由Node创建它们,并通过connection服务器事件传递给用户。

new net.Socket([options])

构造一个新的socket对象。

options对象有以下默认值:

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

参数fd允许你指定一个存在的文件描述符。将readable和(或)writable设为true,允许在这个socket上读和(或)写(注意,仅在参数fd有效时)。关于allowHalfOpen,参见createServer()'end'事件。

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

socket.connect(path[, connectListener])

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

通常情况不需要使用这个函数,比如使用net.createConnection打开socket。只有你实现了自己的socket时才会用到。

这是异步函数。当'connect'事件被触发时,socket已经建立。如果这是问题连接,'connect'事件不会被触发,将会抛出'error'事件。

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

socket.bufferSize

socket.bufferSize是net.Socket的一个属性,用于socket.write()。它能够帮助用户获取更快的运行速度。计算机不能一直处于写入大量数据状态--网络连接可能太慢。Node在内部会将排队数据写入到socket,并在网络可用时发送。(内部实现:轮询socket的文件描述符直到变为可写)。

这种内部缓冲的缺点是会增加内存使用量。这个属性表示当前准备写的缓冲字符数。(字符的数量等于准备写入的字节的数量,但是缓冲区可能包含字符串,这些字符串是惰性编码的,所以准确的字节数还无法知道)。

遇到很大增长很快的bufferSize时,用户可用尝试用pause()resume()来控制字符流。

socket.setEncoding([encoding])

设置socket的编码为可读流。更多信息参见stream.setEncoding()

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.unref()

如果这是事件系统中唯一一个活动的服务器,调用unref将允许程序退出。如果服务器已被unref,则再次调用unref并不会产生影响。

socket.ref()

unref相反,如果这是唯一的服务器,在之前被unref了的服务器上调用ref将不会让程序退出(默认行为)。如果服务器已经被ref,则再次调用ref并不会产生影响。

socket.remoteAddress

远程的IP地址字符串,例如:'74.125.127.100'或者'2001:4860:a005::68'

socket.remoteFamily

远程IP协议族字符串,比如'IPv4'或者'IPv6'

socket.remotePort

远程端口,数字表示,例如:80或者21

socket.localAddress

网络连接绑定的本地接口远程客户端正在连接的本地IP地址,字符串表示。例如,如果你在监听'0.0.0.0'而客户端连接在'192.168.1.1',这个值就会是 '192.168.1.1'。

socket.localPort

本地端口地址,数字表示。例如:80或者21

socket.bytesRead

接收到得字节数。

socket.bytesWritten

发送的字节数。

net.Socket是事件分发器EventEmitter的实例, 有以下事件:

事件: 'lookup'

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

  • err {Error | Null} 错误对象。参见dns.lookup().
  • address {String} IP地址。
  • family {String | Null} 地址类型。参见dns.lookup().

事件: 'connect'

当成功建立socket连接时触发。参见connect()

事件: 'data'

  • {Buffer object}

当接收到数据时触发。参数data可以是BufferString。使用socket.setEncoding()设定数据编码。(更多信息参见Readable Stream)。

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

事件: 'end'

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

默认情况下(allowHalfOpen == false),一旦socket将队列里的数据写完毕,socket将会销毁它的文件描述符。如果allowHalfOpen == true,socket不会从它这边自动调用end(),使的用户可以随意写入数据,而让用户端自己调用end()。

事件: 'timeout'

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

参见:socket.setTimeout()

事件: 'drain'

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

参见:socket.write()的返回值。

事件: 'error'

  • {Error object}

错误发生时触发。以下事件将会直接触发'close'事件。

事件: 'close'

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

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

net.isIP(input)

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

net.isIPv4(input)

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

net.isIPv6(input)

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

由JSRUN为你提供的JS在线运行、在线编译工具
        JSRUN提供的JS 在线运行,JS 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。
yout