• 网络聊天室---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('你好
    ');
    //     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 + '----我已处理过的数据!
    ')
    //         }
    //     })
    //     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

  • 相关阅读:
    Delphi的IDE的快捷键
    XE4 There is no overloaded version GetTextExtentPoint32A
    正确安装DevExpress.ExpressQuantumGrid.Suite For D7
    按比例缩小图片(80分)
    Delphi 2010 新增功能之: TWICImage 类[3]
    Delphi image 等比例缩小
    delphi 图片加水印源代码
    DELPHI窗体属性
    delphi透明panel组件或者制作方法
    利用VB、Delphi轻松实现图像漫游
  • 原文地址:https://www.cnblogs.com/lguow/p/11720759.html
Copyright © 2020-2023  润新知