Node.js网络开发 | 构建TCP服务器

104 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天,点击查看活动详情

构建TCP服务器

首先我们需要知道网络基础知识--OSI网络模型,它将网络通信功能分为了7层:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。TCP协议就是位于传输层的协议。

使用Node.js构建TCP服务器

Node.js在创建一个TCP服务器的时候使用的是net依赖。首先就是需要使用require来加载依赖。

var net = require('net');

其次就是使用createServer方法创建TCP服务器

var server =net.createServer(function(socket){
 console.log("创建TCP服务器连接");
});

监听客户端的连接

我们使用listen的方法来监听客户的连接并设置监听的端口。

server.listen(8080,function(){
    console.log("8080端口监听");
})

当我们运行代码的时候,就能看到我们在listen执行的回调函数中打印的:"8080端口监听"。

查看服务器监听的地址

创建完TCP服务器之后,我们就可以使用server.address()方法来查看这个TCP服务器监听的地址,并且它会返回一个JSON对象。

//获取地址信息
server.address();
//获取地址端口
console.log(address.port);
console.log(address.address);

连接服务器的客户端数量

我们可以使用server.getConnections()方法获取连接服务器的客户端数量。这方法我们使用异步。

//设置最大连接数,当客户端连接服务器数量10的时候就无法连接服务器了
server.maxConnections=10;
server.getConnections(function(err,count){
    console.log("当前客户端数量"+count);
    });

注:此方法放入创建服务器的方法体代码中。

获取客户端发送的数据

socket对象可以用来获取客户端发送的数据流,每次接收到数据的时候触发data时间通过监听这个事件就能获取客户端发送的数据。

//监听data事件
socket.on('data',function(data){
        console.log(data.toString());
});

发送数据给客户端

利用socket.write()可以在服务器中发送数据给客户端

var massage="123456789"
socket.write(message,function(){
    var writeSize=socket.bytesWritten;
    console.log(message);
    console.log(writeSize);
    
});