Node.js 实战:创建 TCP 服务器与客户端

Node.js中创建TCP服务器和客户端均需要用到net模块。

首先创建一个TCP服务器,让它始终监听特定端口,并且可以同时对多个客户端的请求做出响应。即使客户端连接后断开,服务器也始终保持运行状态,这样就可以保证客户端能够多次对服务器进行访问。

然后创建一个TCP客户端,用于访问已经创建的TCP服务器,并与之进行通信。客户端向服务器发送数据并接收后就断开连接,即只进行一次访问。如果要让多个客户端同时访问服务器,只需同时运行多个客户端实例。

实现功能

服务器:监听特定端口,接收客户端发来的数据,然后输出到控制台,并向客户端响应一个字符串。

客户端:连接到特定服务器,然后向服务器发送一个字符串,并接收服务器响应的数据。

创建TCP服务器

TCPServer.js

var net = require('net')    //引入网络模块
var HOST = '127.0.0.1';     //定义服务器地址
var PORT = 3000;            //定义端口号

console.info('Server is running on port ' + PORT);
var server = net.createServer();

//监听连接事件
server.on('connection', function(socket) {
    var client = socket.remoteAddress + ':' + socket.remotePort;
    console.info('Connected to ' + client);

    //监听数据接收事件
    socket.on('data', function(data) {
        console.log(data.toString());
        socket.write('Hello Client!');
    });

    //监听连接断开事件
    socket.on('end', function() {
        console.log('Client disconnected.');
    });
});

//TCP服务器开始监听特定端口
server.listen(PORT, HOST);

在上面的代码中,net.createServer没有带任何参数,仅仅是创建了一个TCP服务器。因此我们需要显式地调用server.on来对连接事件进行监听。

下面是创建TCP服务器的另一种代码形式。

在调用net.createServer的同时也提供了参数,即响应连接事件的回调函数。每当有客户端连接时,服务器会自动调用这一回调函数。本质上跟先创建服务器,再对连接事件进行监听是一样的。

var net = require('net')    //引入网络模块
var HOST = '127.0.0.1';     //定义服务器地址
var PORT = 3000;            //定义端口号

console.info('Server is running on port ' + PORT);

//创建TCP服务器
var server = net.createServer(function(socket) {
    var client = socket.remoteAddress + ':' + socket.remotePort;
    console.log('Connected to ' + client);

    //监听数据接收事件
    socket.on('data', function(data) {
        console.log(data.toString());
        socket.write('Hello Client!');
    });

    //监听连接断开事件
    socket.on('end', function() {
        console.log('Client disconnected.');
    });
});

//TCP服务器开始监听特定端口
server.listen(PORT, HOST);

创建TCP客户端

TCPClient.js

var net = require('net');   //引入网络模块
var HOST = '127.0.0.1';     //定义服务器地址
var PORT = 3000;            //定义端口号

//创建一个TCP客户端实例
var client = net.connect(PORT, HOST, function() {
    console.log('Connected to the server.');
    client.write('Hello Server!');
});

//监听数据传输事件
client.on('data', function(data) {
    console.log(data.toString());
    console.log();
    client.end();
});

//监听连接关闭事件
client.on('end', function() {
    console.log('Server disconnected.');
    console.log();
});

创建完TCP服务器与客户端之后,在命令行中输入以下命令来启动服务器

node TCPServer.js

然后打开新的命令行或终端,运行客户端

node TCPClient.js

相关文章

Loading Likes...

发表评论

电子邮件地址不会被公开。 必填项已用*标注