node -- net

241 阅读4分钟

静态方法

  • isIP(input): 测试 input 是否是 IP 地址。无效的字符串则返回 0,IPv4 地址则返回 4,IPv6的地址则返回 6。
  • isIPv4(input): 如果 input 是 IPv4 地址则返回 true,否则返回 false。
  • isIPv6(input): 如果 input 是 IPv6 地址则返回 true,否则返回 false。

工厂方法

  • createConnection():
    • 一个用于创建 net.Socket 的工厂函数,立即使用 socket.connect() 初始化链接,然后返回启动连接的 net.Socket。
    • net.createConnection(options[, connectListener])
    • net.createConnection(path[, connectListener]) 用于 IPC 连接。
    • net.createConnection(port[, host][, connectListener]) 用于 TCP 连接。
  • createServer([options][, connectionListener]):
    • 创建一个新的 TCP 或 IPC 服务器。
    • options <Object>
      • allowHalfOpen 表明是否允许半开的 TCP 连接。默认值: false。
      • pauseOnConnect 表明是否应在传入连接上暂停套接字。默认值: false。
    • connectionListener 自动设置为 'connection' 事件的监听器。 返回: <net.Server>

一、net.Server 类

构造函数

  • new net.Server([options][, connectionListener]):

    • options <Object> 参阅 net.createServer([options][, connectionListener])。
    • connectionListener <Function> 自动设置为 'connection' 事件的监听器。
    • 返回:<net.Server>

事件

  • close(had_error <boolean> ): 当server关闭的时候触发. 注意,如果有连接存在, 直到所有的连接结束才会触发这个事件,had_error 如果 socket 有传输错误就为 true。

  • connection: 当一个新的connection建立的时候触发

  • error: 'close'事件不会在这个事件触发后继续触发 除非 server.close()是手动调用.

  • listening: 当服务被绑定后调用 server.listen()

属性

  • listening: 一个布尔值, 表明 server 是否正在监听连接

  • maxConnections: 置该属性使得当 server 连接数过多时拒绝连接

方法

  • address(): 返回绑定的ip地址,只有到了 'listening' 事件被触发时候.才可以调用 server.address()
  • listen(): 启动一个服务器来监听连接。
    • server.listen([port[, host[, backlog]]][, callback])
    • server.listen(path[, backlog][, callback])
    • server.listen(options[, callback])
    • server.listen(handle[, backlog][, callback])#
  • close([callback]): 停止 server接受建立新的connections并保持已经存在的connections.
  • getConnections(callback): 异步获取服务器的当前并发连接数
    • 返回: <net.Server>
  • ref():
  • unref():

二、net.Socket 类

  • net.Socket 也是双工流,因此它既可读也可写,也是一个 EventEmitter。

构造函数

  • new net.Socket([options]):
    • options <Object>可用选项有:

    • fd:<number>如果指定了该参数,则使用一个给定的文件描述符包装一个已存在的 socket,否则将创建一个新的 socket。

    • allowHalfOpen <boolean>指示是否允许半打开的 TCP 连接。详情查看 net.createServer()和'end'事件。默认是false`。

    • readable 当传递了 fd 时允许读取 socket,否则忽略。默认 false

    • writable 当传递了 fd 时允许写入 socket,否则忽略。默认 false

事件

  • close(had_error <boolean>): 一旦 socket 完全关闭就发出该事件

  • connect: 当一个 socket 连接成功建立的时候触发该事件

  • data: 当接收到数据的时触发该事件

  • end: 当 socket 的另一端发送一个 FIN 包的时候触发,从而结束 socket 的可读端。

  • drain: 当写入缓冲区变为空时触发。可以用来做上传节流。

  • error(err): 当错误发生时触发。'close' 事件也会紧接着该事件被触发。

  • lookup: 在找到主机之后创建连接之前触发

    • err | 错误对象。查看 dns.lookup()。
    • address IP 地址。
    • family | 地址类型。查看 dns.lookup()。
    • host 主机。
  • ready: 套接字准备好使用时触发。'connect' 后立即触发。

  • timeout: 当 socket 超时的时候触发。该事件只是用来通知 socket 已经闲置。用户必须手动关闭。

属性

  • bufferSize: net.Socket 具有该属性,socket.write() 工作时需要

  • bytesRead: 接收的字节数量。

  • bytesWritten: 发送的字节数量。

  • connecting: 如果为 true 则socket.connect(options[, connectListener])被调用但还未结束。

  • destroyed: 个布尔值,用来指示连接是否已经被销毁。

  • localAddress: 远程客户端连接的本地 IP 地址字符串。

  • localPort: 用数字表示的本地端口。例如 80 或 21。

  • remoteAddress: 用字符串表示的远程 IP 地址。

  • remoteFamily: 用字符串表示的远程 IP 协议族。

  • remotePort: 用数字表示的远程端口。

方法

  • setEncoding([encoding]):

  • write(data[, encoding][, callback]): 在 socket 上发送数据

  • address(): 返回操作系统报告的 socket 的地址、地址族和端口。

  • socket.connect():

    socket.connect(options[, connectListener])
    socket.connect(path[, connectListener]) //用于 IPC 连接。
    socket.connect(port[, host][, connectListener]) //用于 TCP 。
    
  • destroy([exception]): 确保在该 socket 上不再有 I/O 活动。

  • end([data][, encoding]): 半关闭 socket。例如发送一个 FIN 包。服务端仍可以发送数据。

  • pause(): 暂停读写数据。

  • resume(): 在调用 socket.pause()之后恢复读取数据。

  • ref(): 与 unref 相反,在一个已经调用 unref 的 socket 中调用 ref,如果 socket 是仅存的 socket,则程序不会退出(默认)

  • unref():

  • setKeepAlive([enable][, initialDelay]): 启用/禁用长连接功能, 并且在第一个长连接探针被发送到一个空闲的 socket 之前可选则配置初始延迟。

  • setNoDelay([noDelay]): 默认情况下 TCP 连接使用 Nagle 算法,在发送之前缓冲数据。将 noDelay 设置为 true 将会在每次 socket.write() 被调用的时候立即发送数据

  • setTimeout(timeout[, callback]): 当 socket 在 timeout 毫秒不活动之后将其设置为超时状态。