网络聊天室---node.js中net网络模块TCP服务端与客户端的使用

//1.简单创建 net服务器
// const net = require("net");
// const server = net.createServer((c)=>{
//     //connection 监听器
//     console.log("客户端已连接");
//     c.on("end",()=>{
//         console.log("客户端已断开连接");
//     })
//     c.write('你好\r\n');
//     c.pipe(c);
// })
// server.on('error',(err)=>{
//     throw err
// })
// server.listen(8000,()=>{
//     console.log("服务器已启动")
// })
//2.应用套字节对象
// var server = require('net').createServer((socket) => {
//     console.log('new connection');
//     socket.setEncoding("UTF8");
//     socket.on('data', (data) => {
//         console.log('got:', data.toString());
//         if (data.trim().toLowerCase() === 'quit') {
//             socket.write('Bye!');
//             return socket.end();
//         } else {
//             socket.write(data + '----我已处理过的数据!\r\n')
//         }
//     })
//     socket.on("end", () => {
//         console.log("客户端已断开连接");
//     })

// }).listen(3000)
//3.从套字节输出到文件
// var ws = require("fs").createWriteStream('output.txt');
// require('net').createServer(function(socket){
//     socket.pipe(ws);
// }).listen(4000)
//4.从文件通过套字节输出到客户端
// require("net").createServer(function(socket){
//     var rs = require('fs').createReadStream('output.txt');
//     rs.pipe(socket)
//   //  rs.pipe(socket,{end:false})
// }).listen(4000)
//5.TCP聊天服务器
var net = require("net");
var server = net.createServer();
var sockets = [];   //1.保存所有连接
server.on('error',function(err){
    throw err
})

//1.接受链接
server.on('connection',function(socket){
    console.log('got a new connection');
    sockets.push(socket);//2.保存
    //2.从连接中读取数据
    socket.setEncoding("UTF8");
    socket.on('data',function(data){
        console.log('got data:',data)
        //广播数据 将数据广播给所有的连接
        sockets.forEach(function(otherSocket){
            if(otherSocket !== socket){
                otherSocket.write(data);
            }
        })
    })
})
//3.连接被关闭时,将他删除
server.on('close',function(){
    console.log('Server close');
    var index = sockets.indexOf(socket);
    sockets.splice(index,1)
})

server.listen('4000');

启动命令:telnet 127.0.0.1 4000

 

 

参考资料:https://www.cnblogs.com/jkko123/p/10247593.html

posted @ 2019-10-22 16:49  奔跑的太阳花  阅读(410)  评论(0编辑  收藏  举报