首页 > 语言 > JavaScript > 正文

深入Node TCP模块的理解

2024-05-06 15:41:41
字体:
来源:转载
供稿:网友

1. TCP

在Node.js中,提供了net模块用来实现TCP服务器和客户端的通信。

1.1 TCP服务器

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

options.allowHalfOpen 是否允许单方面连接,默认值为false connectionListener参数用于指定当客户端与服务器建立连接时所要调用的回调函数,回调中有一个参数socket,指的是TCP服务器监听的socket端口对象

也可以通过监听connection事件的方式来指定监听函数

server.on('connection',function(socket){});

1.1.1 启动TCP服务器

可以使用listen方法通知服务器开始监听客户端的连接

server.listen(port,[host],[backlog],[callback])

port 必须指定的端口号 host 指定需要监听的IP地址或主机名,如果省略的话服务器将监听来自于任何客户端的连接 backlog指定位于等待队列中的客户端连接的最大数量,默认值为511
server.on('listening',function(){});

1.1.2 使用TCP服务器

let net = require('net');let server = net.createServer(function(socket){ console.log('客户端已连接');});server.listen(8080,'localhost',function(){  console.log('服务器开始监听');});

1.1.3 address

server.address()
port 端口号 address TCP服务器监听的地址 family 协议的版本

1.1.4 getConnections

查看当前与TCP服务器建立连接的客户端的连接数量以及设置最大连接数量

server.getConnections(callback); server.maxConnections = 2;

1.1.5 close

使用close方法可以显式拒绝所有的客户端的连接请求,当所有已连接的客户端关闭后服务器会自动关闭,并触发服务器的close事件。

server.close();server.on('close',callback);

1.2 socket

1.2.1 address

net.Socket代表一个socket端口对象,它是一个可读可写流。

let net = require('net');let util = require('util');let server = net.createServer(function(socket){ server.getConnections((err,count)=>{   server.maxConnections = 1;   console.log('最大连接数量%d,当前连接数量%d',server.maxConnections,count);  });  let address = socket.address(); console.log('客户端地址 %s',util.inspect(address));});

1.2.2 读取数据

let server = net.createServer(function (socket) {  socket.setEncoding('utf8');  socket.on('data', function (data) {    console.log('本次收到的内容为%s,累计收到的字节数是%d', data, socket.bytesRead);  });});

1.2.3 监听关闭事件

let server = net.createServer(function (socket) {  socket.on('end', function () {    console.log('客户端已经关闭');  });});            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选