- Node.js教程
- Node.js - 教程
- Node.js - 简介
- Node.js - 环境设置
- Node.js - 首次申请
- Node.js - REPL 终端
- Node.js - 命令行选项
- Node.js - 包管理器 (NPM)
- Node.js - 回调概念
- Node.js - 上传文件
- Node.js - 发送电子邮件
- Node.js - 活动
- Node.js - 事件循环
- Node.js - 事件发射器
- Node.js - 调试器
- Node.js - 全局对象
- Node.js - 控制台
- Node.js - 流程
- Node.js - 扩展应用程序
- Node.js - 包装
- Node.js - Express 框架
- Node.js - RESTful API
- Node.js - 缓冲器
- Node.js - Streams
- Node.js - 文件系统
- Node.js MySQL
- Node.js - MySQL 快速入门
- Node.js - MySQL创建数据库
- Node.js - MySQL创建表
- Node.js - MySQL Insert Into
- Node.js - MySQL Select From
- Node.js - MySQL Where 子句
- Node.js - MySQL Order By
- Node.js - MySQL Delete
- Node.js - MySQL Update
- Node.js - MySQL Join
- Node.js MongoDB
- Node.js - MongoDB 快速入门
- Node.js - MongoDB 创建数据库
- Node.js - MongoDB 创建集合
- Node.js - MongoDB Insert
- Node.js - MongoDB Find
- Node.js - MongoDB 查询
- Node.js - MongoDB 排序
- Node.js - MongoDB Delete
- Node.js - MongoDB Update
- Node.js - MongoDB Limit
- Node.js - MongoDB Join
- Node.js模块
- Node.js - 模块
- Node.js - 内置模块
- Node.js - utility 模块
- Node.js - Web 模块
Node.js - net 模块
Node.js net 模块用于创建服务器和客户端。此模块提供了一个异步网络包装器,可以使用以下语法进行导入。
var net = require("net")
方法
方法 | 描述 |
---|---|
net.createServer([options][, connectionListener]) | 创建新的 TCP 服务器。connectionListener 参数会自动设置为“connection”事件的侦听器。 |
net.connect(options[, connectionListener]) | 一个工厂方法,返回一个新的 net.Socket 并连接到提供的地址和端口。 |
net.createConnection(options[, connectionListener]) | 一个工厂方法,返回一个新的 net.Socket 并连接到提供的地址和端口。 |
net.connect(port[, host][, connectListener]) | 创建到主机上端口的 TCP 连接。如果省略 host,则将假定为“localhost”。connectListener 参数将被添加为“connect”事件的侦听器。它是一种工厂方法,它返回一个新的 net.Socket 。 |
net.createConnection(port[, host][, connectListener]) | 创建到主机上端口的 TCP 连接。如果省略 host,则将假定为“localhost”。connectListener 参数将被添加为“connect”事件的侦听器。它是一种工厂方法,它返回一个新的 net.Socket 。 |
net.connect(path[, connectListener]) | 创建到路径的 Unix Socket 连接。connectListener 参数将被添加为“connect”事件的侦听器。它是一种工厂方法,它返回一个新的 net.Socket 。 |
net.createConnection(path[, connectListener]) | 创建到路径的 Unix Socket 连接。connectListener 参数将被添加为“connect”事件的侦听器。它是一种工厂方法,它返回一个新的 net.Socket 。 |
net.isIP(input) | 测试输入是否为 IP 地址。对于无效字符串,返回 0,对于 IP 版本 4 地址,返回 4,对于 IP 版本 6 地址,返回 6。 |
net.isIPv4(input) | 如果输入是版本 4 IP 地址,则返回 true,否则返回 false。 |
net.isIPv6(input) | 如果输入是版本 6 的 IP 地址,则返回 true,否则返回 false。 |
类 - net.Server
此类用于创建 TCP 或本地服务器。
方法
方法 | 描述 |
---|---|
server.listen(port[, host][, backlog][, callback]) | 开始接受指定端口和主机上的连接。如果省略主机,服务器将接受定向到任何 IPv4 地址 (INADDR_ANY) 的连接。端口值为零将分配一个随机端口。 |
server.listen(path[, callback]) | 启动本地 Socket 服务器,侦听给定路径上的连接。 |
server.listen(handle[, callback]) | handle 对象可以设置为服务器或 Socket (具有底层 _handle 成员的任何内容),也可以设置为 {fd: <n>} 对象。这将导致服务器接受指定句柄上的连接,但假定文件描述符或句柄已绑定到端口或域 Socket 。Windows 不支持侦听文件描述符。 |
server.listen(options[, callback]) | 选项的 port、host 和 backlog 属性以及可选的回调函数的行为与它们在调用 server.listen(port, [host], [backlog], [callback]) 时的行为相同。或者,可以使用 path 选项来指定 UNIX Socket 。 |
server.close([callback]) | 最后,当所有连接都结束时,服务器发出“关闭”事件。 |
server.address() | 返回操作系统报告的服务器的绑定地址、地址、系列名称和端口。 |
server.unref() | 如果服务器是事件系统中唯一活动的服务器,则在服务器上调用 unref 将允许程序退出。如果服务器已经是 unrefd,那么再次调用 unref 将不起作用。 |
server.ref() | 与 unref 相反,如果唯一剩下的服务器,在以前未引用的服务器上调用 ref 将不会让程序退出(默认行为)。如果服务器是 refd,则再次调用 ref 将不起作用。 |
server.getConnections(callback) | 异步获取服务器上的并发连接数。当 Socket 被发送到叉子时工作。回调应该接受两个参数:err 和 count。 |
事件
事件 | 描述 |
---|---|
listening | 在调用 server.listen 后绑定服务器时发出。 |
connection | 在建立新连接时发出。Socket 对象,该连接对象可供事件处理程序使用。Socket 是 net 的一个 net.Socket。 |
close | 在服务器关闭时发出。请注意,如果存在连接,则在所有连接结束之前不会发出此事件。 |
error | 发生错误时发出。“close”事件将在此事件之后直接调用。 |
类 - net.Socket
此对象是 TCP 或本地 Socket 的抽象。net.Socket 实例实现双工 Stream 接口。它们可以由用户创建并用作客户端(使用 connect()),也可以由 Node 创建并通过服务器的“连接”事件传递给用户。
事件
net.Socket 是一个 eventEmitter,它发出以下事件。
事件 | 描述 |
---|---|
lookup | 在解析主机名之后但在连接之前发出。不适用于 UNIX socket。 |
connect | 在成功建立 socket 连接时发出。 |
data | 在接收到数据时发出。参数 data 将是 Buffer 或 String。数据的编码由 socket.setEncoding() 设置。 |
end | 当 Socket 的另一端发送 FIN 数据包时发出。 |
timeout | 如果 Socket 因不活动而超时,则发出。这只是为了通知 Socket 已空闲。用户必须手动关闭连接。 |
drain | 当写入缓冲区变为空时发出。可用于限制上传。 |
error | 发生错误时发出。“close”事件将在此事件之后直接调用。 |
close | 一旦插座完全关闭,就会发出。参数 had_error 是一个布尔值,它指示 Socket 是否由于传输错误而关闭。 |
属性
net.Socket 提供了许多有用的属性,以便更好地控制 Socket 交互。
属性 | 描述 |
---|---|
socket.bufferSize | 此属性显示当前缓冲要写入的字符数。 |
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 | 发送的字节数。 |
方法
方法 | 描述 |
---|---|
new net.Socket([options]) | 构造一个新的 Socket 对象。 |
socket.connect(port[, host][, connectListener]) | 打开给定 Socket 的连接。如果给出了 port 和 host,则 Socket 将作为 TCP Socket 打开,如果省略 host,则将假定为 localhost。如果给定了路径,则 Socket 将作为指向该路径的 Unix Socket 打开。 |
socket.connect(path[, connectListener]) | 打开给定 Socket 的连接。如果给出了 port 和 host,则 Socket 将作为 TCP Socket 打开,如果省略 host,则将假定为 localhost。如果给定了路径,则 Socket 将作为指向该路径的 Unix Socket 打开。 |
socket.setEncoding([encoding]) | 将 Socket 的编码设置为可读流。 |
socket.write(data[, encoding][, callback]) | 在 Socket 上发送数据。第二个参数指定字符串情况下的编码 - 它默认为 UTF8 编码。 |
socket.end([data][, encoding]) | 半闭合 Socket ,即发送 FIN 数据包。服务器可能仍会发送一些数据。 |
socket.destroy() | 确保此 Socket 上不再发生 I/O 活动。仅在出现错误(解析错误左右)时才需要。 |
socket.pause() | 暂停读取数据。也就是说,不会发出“数据”事件。用于限制上传。 |
socket.resume() | 在调用 pause() 后恢复阅读。 |
socket.setTimeout(timeout[, callback]) | 将 Socket 设置为在 Socket 上超时毫秒后超时。默认情况下,net.Socket 没有超时。 |
socket.setNoDelay([noDelay]) | 禁用 Nagle 算法。默认情况下,TCP 连接使用 Nagle 算法,它们在发送数据之前缓冲数据。为 noDelay 设置 true 将在每次调用 socket.write() 时立即触发数据。noDelay 默认为 true。 |
socket.setKeepAlive([enable][, initialDelay]) | 启用/禁用保持连接功能,并可选择设置在空闲 Socket 上发送第一个保持连接探测之前的初始延迟。enable 默认值为 false。 |
socket.address() | 返回操作系统报告的绑定地址、地址系列名称和 Socket 端口。返回一个具有三个属性的对象,例如 { port: 12346, family: 'IPv4', address: '127.0.0.1' }。 |
socket.unref() | 如果这是事件系统中唯一活动的 Socket ,则在 Socket 上调用 unref 将允许程序退出。如果 Socket 已经是 unrefd,那么再次调用 unref 将不起作用。 |
socket.ref() | 与 unref 相反,如果程序是唯一剩下的 Socket ,则在以前未引用的 Socket 上调用 ref 将不会让程序退出(默认行为)。如果 Socket 是 refd,那么再次调用 ref 将不起作用。 |
例子
使用以下代码创建名为 server.js 的 js 文件 -
文件:server.js
var net = require('net');
var server = net.createServer(function(connection) {
console.log('client connected');
connection.on('end', function() {
console.log('client disconnected');
});
connection.write('Hello World!\r\n');
connection.pipe(connection);
});
server.listen(8080, function() {
console.log('server is listening');
});
现在运行server.js以查看结果 -
$ node server.js
验证输出。
server is listening
使用以下代码创建名为 client.js 的 js 文件 -
文件:client.js
var net = require('net');
var client = net.connect({port: 8080}, function() {
console.log('connected to server!');
});
client.on('data', function(data) {
console.log(data.toString());
client.end();
});
client.on('end', function() {
console.log('disconnected from server');
});
现在从另一个终端运行client.js以查看结果 -
$ node client.js
验证输出。
connected to server!
Hello World!
disconnected from server
Hello World!
disconnected from server
验证运行 server.js 的终端上的输出。
server is listening
client connected
client disconnected
client connected
client disconnected