方法和属性


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

创建一个新的服务器。connectionListener 参数自动设置为 ‘connection’ 事件 的一个监听器。

options 是一个对象包含以下默认值:

  1. {
  2. allowHalfOpen: false,
  3. pauseOnConnect: false
  4. }

如果 allowHalfOpentrue,那么当其他 socket 端发送了一个 FIN 包时,socket 不会自动发送 FIN 包。该 socket 变成不可读但可写的状态。你应该明确地调用 end() 方法。详见 ‘end’ 事件了解更多详情。

如果 pauseOnConnecttrue,那么与每个传入连接关联的 socket 都会被暂停,并且从它的句柄中无法读取数据。这使得连接在不读取原始进程的数据的情况下,在进程之间传递。调用 resume() 从暂停 socket 中开始读取数据。

这是一个监听端口 8124 的连接的回声服务器例子:

  1. const net = require('net');
  2. const server = net.createServer((c) => {
  3. // 'connection' listener
  4. console.log('client connected');
  5. c.on('end', () => {
  6. console.log('client disconnected');
  7. });
  8. c.write('hello\r\n');
  9. c.pipe(c);
  10. });
  11. server.on('error', (err) => {
  12. throw err;
  13. });
  14. server.listen(8124, () => {
  15. console.log('server bound');
  16. });

使用 telnet 进行测试:

  1. telnet localhost 8124

要监听 socket /tmp/echo.sock,只要将倒数的第三行改为

  1. server.listen('/tmp/echo.sock', () => {
  2. console.log('server bound');
  3. });

使用 nc 来连接一个 UNIX 域 socket 服务器:

  1. nc -U /tmp/echo.sock

net.createConnection(options[, connectListener])

一个工厂函数,返回一个新的 net.Socket 实例,并使用提供的 options 自动连接。

options 同时被传到 net.Socket 构造函数和 socket.connect 方法。

connectListener 参数会被添加为 ‘connect’ 事件 的监听器一次。

这是先前描述的回声服务器的客户端的一个例子:

  1. const net = require('net');
  2. const client = net.createConnection({
  3. port: 8124
  4. }, () => {
  5. //'connect' listener
  6. console.log('connected to server!');
  7. client.write('world!\r\n');
  8. });
  9. client.on('data', (data) => {
  10. console.log(data.toString());
  11. client.end();
  12. });
  13. client.on('end', () => {
  14. console.log('disconnected from server');
  15. });

要监听 socket /tmp/echo.sock,只要将第二行改为

  1. const client = net.createConnection({path: '/tmp/echo.sock'});

net.createConnection(path[, connectListener])

一个工厂函数,返回一个新的 unix net.Socket 实例,并使用提供的 path 自动连接。

connectListener 参数会被添加为 ‘connect’ 事件 的监听器一次。

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

一个工厂函数,返回一个新的 net.Socket 实例,并使用提供的 pathhost 自动连接。

如果省略了 host'localhost' 将会承担其职责。

connectListener 参数会被添加为 ‘connect’ 事件 的监听器一次。

net.connect(options[, connectListener])

一个工厂函数,返回一个新的 net.Socket 实例,并使用提供的 options 自动连接。

options 同时被传到 net.Socket 构造函数和 socket.connect 方法。

connectListener 参数会被添加为 ‘connect’ 事件 的监听器一次。

这是先前描述的回声服务器的客户端的一个例子:

  1. const net = require('net');
  2. const client = net.connect({
  3. port: 8124
  4. }, () => {
  5. // 'connect' listener
  6. console.log('connected to server!');
  7. client.write('world!\r\n');
  8. });
  9. client.on('data', (data) => {
  10. console.log(data.toString());
  11. client.end();
  12. });
  13. client.on('end', () => {
  14. console.log('disconnected from server');
  15. });

要监听 socket /tmp/echo.sock,只要将第二行改为

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

net.connect(path[, connectListener])

一个工厂函数,返回一个新的 unix net.Socket 实例,并使用提供的 path 自动连接。

connectListener 参数会被添加为 ‘connect’ 事件 的监听器一次。

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

一个工厂函数,返回一个新的 net.Socket 实例,并使用提供的 pathhost 自动连接。

如果省略了 host'localhost' 将会承担其职责。

connectListener 参数会被添加为 ‘connect’ 事件 的监听器一次。

net.isIP(input)

检测是否输入是一个 IP 地址。对于无效的字符串,返回 0,对于 IPv4 的地址返回 4,对于 IPv6 地址返回 6。

net.isIPv4(input)

如果输入的是版本 4 的 IP 地址,则返回 true,否则返回 false。

net.isIPv6(input)

如果输入的是版本 6 的 IP 地址,则返回 true,否则返回 false。