当前位置: 首页 > 文档资料 > Node.js 中文教程 >

Net Module

优质
小牛编辑
141浏览
2023-12-01

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