Node.js net 模块

  • 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套接字连接。 connectListener参数将添加为“connect”事件的侦听器。这是一种工厂方法,它返回一个新的“net.Socket”。
    net.createConnection(path[, connectListener]) 创建到路径的Unix套接字连接。 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]) 启动本地套接字服务器,以侦听给定路径上的连接。
    server.listen(handle[, callback]) 可以将handle对象设置为服务器或套接字(具有基础_handle成员的任何对象)或{fd:<n>}对象。这将导致服务器接受指定句柄上的连接,但假定文件描述符或句柄已绑定到端口或域套接字。 Windows不支持监听文件描述符。
    server.listen(options[, callback]) 选项的端口,主机和待办事项属性以及可选的回调函数,其行为与调用服务器.listen(port,[host],[backlog],[callback])时的行为相同。或者,可以使用path选项指定UNIX套接字。
    server.close([callback]) 当所有连接都结束并且服务器发出“关闭”事件时,最后关闭。
    server.address() 返回操作系统报告的绑定地址,地址族名称和服务器的端口。
    server.unref() 如果这是事件系统中唯一的活动服务器,则在服务器上调用unref将允许程序退出。如果服务器已经取消引用,则再次调用取消引用将无效。
    server.ref() 与unref相反,如果它是剩下的唯一服务器,则在以前未引用的服务器上调用ref不会让程序退出(默认行为)。如果服务器是refd,则再次调用ref将无效。
    server.getConnections(callback) 异步获取服务器上的并发连接数。将套接字发送到分叉时有效。回调应使用两个参数err和count。
    事件
    此类用于创建TCP或本地服务器。
    事件 说明
    >listening 调用server.listen后绑定服务器时发出。
    >connection 建立新连接时发出。 套接字对象,连接对象可用于事件处理程序。 套接字是net.Socket的一个实例。
    >close 服务器关闭时发出。 请注意,如果存在连接,则在所有连接结束之前不会发出此事件。
    >error 发生错误时发出。 “close”事件将在此事件之后直接调用。
  • net.Socket 类

    对象是TCP或本地套接字的抽象。net.Socket实例实现双工Stream接口。它们可以由用户创建并用作客户端(通过connect()),也可以由Node创建并通过服务器的“connection”事件传递给用户。
    net.Socket是一个eventEmitter,它发出以下事件。
    事件 说明
    lookup 在解析主机名之后但在连接之前发出。 不适用于UNIX套接字。
    connect 成功建立套接字连接时发出。
    data 接收数据时发出。 参数数据将是Buffer或String。 数据的编码由socket.setEncoding()设置。
    end 当套接字的另一端发送FIN数据包时发出。
    timeout 如果套接字因不活动超时而发出。 这仅是为了通知套接字已空闲。 用户必须手动关闭连接。
    drain 当写缓冲区变空时发出。 可用于限制上传。
    error 发生错误时发出。 “close”事件将在此事件之后直接调用。
    close 插座完全关闭后发出。 had_error参数是一个布尔值,指示套接字是否由于传输错误而关闭。
    属性
    此类用于创建TCP或本地服务器。
    属性 说明
    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.bytesWrited 发送的字节数。
    方法
    方法 说明
    new net.Socket([options]) 构造一个新的socket对象。
    socket.connect(port[, host][, connectListener]) :给定专有的连接。如果给定了端口和主机,则更多将作为TCP交替打开;如果省略主机,则将使用本地主机。如果称为了路径,则该替代将作为该路径的Unix专有打开。
    socket.connect(path[, connectListener]) :给定专有的连接。如果给定了端口和主机,则更多将作为TCP交替打开;如果省略主机,则将使用本地主机。如果称为了路径,则该替代将作为该路径的Unix专有打开。
    socket.setEncoding([encoding]) 将专有的编码设置为预期流。
    socket.write(data[, encoding][, callback]) 在各个上发送数据。第二个参数指定串行形式的编码-默认为UTF8编码。
    socket.end([data][, encoding]) 半关闭充足,即发送FIN数据包。服务器可能仍会发送一些数据。
    socket.destroy() 确保此之后上上不再发生I / O活动。仅在出现错误(解析错误等)的情况下才需要。
    socket.pause() 暂停数据读取。初始,“数据”事件将不会发出。
    socket.resume() 在调用pause()后恢复读取。
    socket.setTimeout(timeout[, callback]) 将充足设置为在大量上的闲置超时超过后超时。有时情况下,net.Socket没有超时。
    socket.setNoDelay([noDelay]) 在某种情况下,TCP连接使用Nagle算法,它们在发送数据之前先缓冲数据。将noDelay设置为真会在每次调用socket.write()时立即触发数据。noDelay默认为真。
    socket.setKeepAlive([enable][, initialDelay]) 启用/保留保持活动功能,并有选择地设置在第一个保持活动探针在交替并上发送之前的初始初始化。启用替换错误。
    socket.address() 返回操作系统报告的绑定地址,地址系列名称和替代的端口。返回具有三个属性的对象,例如{端口:12346,系列:'IPv4',地址:'127.0.0.1'}。
    socket.unref() 如果这是事件系统中唯一的活动过多,则在充分上调用unref将允许程序退出。如果大量已被取消引用,则再次调用取消引用将无效。
    socket.ref() 与unref相反,如果它是剩下的唯一替代,则在以前未引用的替代上调用ref不会让程序退出(某种行为)。如果重叠是refd,则再次调用ref将无效。
  • 示例

    使用以下代码创建一个名为server.js的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文件-
    
    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