Net Module
Node.js net模块用于创建服务器和客户端。 此模块提供异步网络包装器,可以使用以下语法导入它。
var net = require("net")
方法 (Methods)
Sr.No. | 方法和描述 |
---|---|
1 | net.createServer([options][, connectionListener]) 创建一个新的TCP服务器。 connectionListener参数自动设置为“connection”事件的侦听器。 |
2 | net.connect(options[, connectionListener]) 一个工厂方法,它返回一个新的'net.Socket'并连接到提供的地址和端口。 |
3 | net.createConnection(options[, connectionListener]) 一个工厂方法,它返回一个新的'net.Socket'并连接到提供的地址和端口。 |
4 | net.connect(port[, host][, connectListener]) 创建到主机端口的TCP连接。 如果省略host,则假定为“localhost”。 connectListener参数将添加为“connect”事件的侦听器。 它是一个返回新的'net.Socket'的工厂方法。 |
5 | net.createConnection(port[, host][, connectListener]) 创建到主机端口的TCP连接。 如果省略host,则假定为“localhost”。 connectListener参数将添加为“connect”事件的侦听器。 它是一个返回新的'net.Socket'的工厂方法。 |
6 | net.connect(path[, connectListener]) 创建到路径的Unix套接字连接。 connectListener参数将添加为“connect”事件的侦听器。 它是一个返回新的'net.Socket'的工厂方法。 |
7 | net.createConnection(path[, connectListener]) 创建到路径的Unix套接字连接。 connectListener参数将添加为“connect”事件的侦听器。 它是一个返回新的'net.Socket'的工厂方法。 |
8 | net.isIP(input) 测试输入是否为IP地址。 对于无效字符串,返回0,对于IP版本4地址,返回4,对于IP版本6地址,返回6。 |
9 | net.isIPv4(input) 如果输入是版本4 IP地址,则返回true,否则返回false。 |
10 | net.isIPv6(input) 如果输入是版本6 IP地址,则返回true,否则返回false。 |
类 - net.Server
此类用于创建TCP或本地服务器。
方法 (Methods)
Sr.No. | 方法和描述 |
---|---|
1 | server.listen(port[, host][, backlog][, callback]) 开始接受指定端口和主机上的连接。 如果省略主机,则服务器将接受指向任何IPv4地址(INADDR_ANY)的连接。 端口值为零将分配随机端口。 |
2 | server.listen(path[, callback]) 启动本地套接字服务器,侦听给定路径上的连接。 |
3 | server.listen(handle[, callback]) handle对象可以设置为服务器或套接字(具有底层_handle成员的任何东西)或{fd:}对象。 它将使服务器接受指定句柄上的连接,但假定文件描述符或句柄已绑定到端口或域套接字。 Windows不支持侦听文件描述符。 |
4 | server.listen(options[, callback]) 选项的端口,主机和积压属性以及可选的回调函数的行为与调用server.listen(port,[host],[backlog],[callback])时的行为相同。 或者,path选项可用于指定UNIX套接字。 |
5 | server.close([callback]) 最后在所有连接结束并且服务器发出“关闭”事件时关闭。 |
6 | server.address() 返回操作系统报告的绑定地址,服务器的地址系列名称和端口。 |
7 | server.unref() 如果这是事件系统中唯一的活动服务器,则在服务器上调用unref将允许程序退出。 如果服务器已经unfd,那么再次调用unref将无效。 |
8 | server.ref() 与unref相反,在以前未刷新的服务器上调用ref将不会让程序退出,如果它是唯一的服务器(默认行为)。 如果服务器已重新启动,则再次调用ref将不起作用。 |
9 | server.getConnections(callback) 异步获取服务器上的并发连接数。 套接字被发送到分叉时工作。 回调应该有两个参数错误和计数。 |
事件 (Events)
Sr.No. | 活动和描述 |
---|---|
1 | listening 在调用server.listen后绑定服务器时发出。 |
2 | connection 在建立新连接时发出。 Socket对象,连接对象可用于事件处理程序。 Socket是net.Socket的一个实例。 |
3 | close 服务器关闭时发出。 请注意,如果存在连接,则在所有连接结束之前不会发出此事件。 |
4 | error 发生错误时发出。 此事件后将直接调用'close'事件。 |
类 - net.Socket
此对象是TCP或本地套接字的抽象。 net.Socket实例实现双工Stream接口。 它们可以由用户创建并用作客户端(使用connect()),也可以由Node创建,并通过服务器的“连接”事件传递给用户。
事件 (Events)
net.Socket是一个eventEmitter,它会发出以下事件。
Sr.No. | 活动和描述 |
---|---|
1 | lookup 解析主机名后但在连接之前发出。 不适用于UNIX套接字。 |
2 | connect 成功建立套接字连接时发出。 |
3 | data 收到数据时发出。 参数数据将是Buffer或String。 数据编码由socket.setEncoding()设置。 |
4 | end 当套接字的另一端发送FIN数据包时发出。 |
5 | timeout 如果套接字因不活动而超时,则发出。 这只是为了通知套接字已空闲。 用户必须手动关闭连接。 |
6 | drain 写缓冲区变空时发出。 可用于限制上传。 |
7 | error 发生错误时发出。 此事件后将直接调用'close'事件。 |
8 | close 插座完全关闭后发出。 参数had_error是一个布尔值,表示套接字是否由于传输错误而关闭。 |
属性 (Properties)
net.Socket提供了许多有用的属性,可以更好地控制套接字交互。
Sr.No. | 财产和描述 |
---|---|
1 | socket.bufferSize 此属性显示当前要写入的缓冲字符数。 |
2 | socket.remoteAddress 远程IP地址的字符串表示形式。 例如,'74 .125.127.100'或'2001:4860:a005 :: 68'。 |
3 | socket.remoteFamily 远程IP系列的字符串表示形式。 'IPv4'或'IPv6'。 |
4 | socket.remotePort 远程端口的数字表示形式。 例如,80或21。 |
5 | socket.localAddress 远程客户端连接的本地IP地址的字符串表示形式。 例如,如果您正在侦听“0.0.0.0”并且客户端连接“192.168.1.1”,则值将为“192.168.1.1”。 |
6 | socket.localPort 本地端口的数字表示形式。 例如,80或21。 |
7 | socket.bytesRead 接收的字节数。 |
8 | socket.bytesWritten 发送的字节数。 |
方法 (Methods)
Sr.No. | 方法和描述 |
---|---|
1 | new net.Socket([options]) 构造一个新的套接字对象。 |
2 | socket.connect(port[, host][, connectListener]) 打开给定套接字的连接。 如果给出了端口和主机,则套接字将作为TCP套接字打开,如果省略host,则假定为localhost。 如果给出了路径,则套接字将作为Unix套接字打开到该路径。 |
3 | socket.connect(path[, connectListener]) 打开给定套接字的连接。 如果给出了端口和主机,则套接字将作为TCP套接字打开,如果省略host,则假定为localhost。 如果给出了路径,则套接字将作为Unix套接字打开到该路径。 |
4 | socket.setEncoding([encoding]) 将套接字的编码设置为可读流。 |
5 | socket.write(data[, encoding][, callback]) 在套接字上发送数据。 第二个参数指定字符串的编码 - 默认为UTF8编码。 |
6 | socket.end([data][, encoding]) 半关闭套接字,即它发送FIN数据包。 服务器可能仍会发送一些数据。 |
7 | socket.destroy() 确保此套接字上不再发生I/O活动。 仅在出现错误(解析错误等)时才需要。 |
8 | socket.pause() 暂停读取数据。 也就是说,不会发出'数据'事件。 用于限制上传。 |
9 | socket.resume() 在暂停()调用后恢复阅读。 |
10 | socket.setTimeout(timeout[, callback]) 在套接字上的超时毫秒不活动后,将套接字设置为超时。 默认情况下,net.Socket没有超时。 |
11 | socket.setNoDelay([noDelay]) 禁用Nagle算法。 默认情况下,TCP连接使用Nagle算法,它们在发送数据之前缓冲数据。 对noDelay设置为true将在每次调用socket.write()时立即触发数据。 noDelay默认为true。 |
12 | socket.setKeepAlive([enable][, initialDelay]) 启用/禁用保持活动功能,并可选择在空闲套接字上发送第一个keepalive探针之前设置初始延迟。 启用默认值为false。 |
13 | socket.address() 返回操作系统报告的绑定地址,地址系列名称和套接字端口。 返回具有三个属性的对象,例如{port:12346,family:'IPv4',address:'127.0.0.1'}。 |
14 | socket.unref() 如果这是事件系统中唯一的活动套接字,则在套接字上调用unref将允许程序退出。 如果套接字已经unfd,则再次调用unref将不起作用。 |
15 | socket.ref() 与unref相反,在先前未刷新的套接字上调用ref将不会让程序退出,如果它是唯一的套接字(默认行为)。 如果套接字是refd,那么再次调用ref将不起作用。 |
例子 (Example)
使用以下代码创建名为server.js的js文件 -
File: 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文件 -
File: 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
验证运行server.js的终端上的输出。
server is listening
client connected
client disconnected