Node.js的net模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js的net模块相关的知识,希望对你有一定的参考价值。

net模块提供了一个异步网络包装器,用于TCP网络编程,它包含了创建服务器和客户端的方法

创建TCP服务器

net.createServer方法

创建客户端去连接服务器

net.connect方法

简易聊天室服务端

chatServer.js

var net = require(‘net‘);

// 创建TCP服务器
var server = net.createServer();
// 存储所有客户端socket
var sockets = [];

//接收客户端连接请求
server.on(‘connection‘, function(socket) {
    console.log(‘Got a new connection‘);
    sockets.push(socket);
    //获取客户端发送过来的数据
    socket.on(‘data‘, function(data) {
        console.log(‘Got data: ‘, data);
        //服务器广播数据,把来自客户端的数据转发送给其他所有客户端
        sockets.forEach(function(otherSocket) {
            if (otherSoecket !== socket) {
                otherSocket.write(data);
            }
        });
    ]);
    // 把关闭连接的客户端从服务器广播列表中给删除掉
    socket.on(‘close‘, function() {
        console.log(‘A client connection closed‘);
        var index = sockets.indexOf(socket);
        sockets.splice(index, 1);
    });
});

server.on(‘error‘, function(err) {
    console.log(‘Server error: ‘, err.message);
});
// 监听客户端断开连接事件
server.on(‘close‘, function() {
    console.log(‘Server closed‘);
});
// 启动服务
server.listen(8080);

简易聊天室客户端

var net = require(‘net‘);

process.stdin.resume();
process.stdin.setEncoding(‘utf8‘);
// 连接服务器
var client = net.connect({ port: 8080 }, function() {
    console.log(‘Connected to server‘);

    // 获取输入的字符串
    console.log(‘input: ‘);
    process.stdin.on(‘data‘, function(data) {
        // 发送输入的字符串到服务器
        console.log(‘input: ‘);
        client.write(data);

        // 输入 ‘close‘ 字符串时关闭连接
        if (data === ‘close\n‘) {
            client.end();
        }
    });
});

// 获取服务端发送过来的数据
client.on(‘data‘, function(data) {
    console.log(‘Other user\‘s input‘, data.toString());
});
// 断开连接
client.on(‘end‘, function() {
    console.log(‘Disconnected from server‘);
    // 退出客户端程序
    process.exit();
});

process是一个Node.js的全局模块

process.stdin用于获取来自标准输入的可读流

执行node chatServer.js启动服务端

执行node chatClient.js启动客户端,可同时启动多个

会在服务端和其他客户端开到这个客户端的输入内容

 

以上是关于Node.js的net模块的主要内容,如果未能解决你的问题,请参考以下文章

node.js中net模块node实现tcp通信

如何将 Node.js 中的 net 模块与 browserify 一起使用?

Node.js Net 模块+DNS 模块

Node.js JavaScript 片段中的跳过代码

node.js中使用net模块创建服务器和客户端

初识 Node.js 丨path 路径模块