開始學nodejs——net模塊


net模塊的組成部分

下面整理出了整個net模塊的知識結構,和各個事件、方法、屬性的用法

net.Server類

net.Socket類

事件

方法

屬性

工廠方法

練習代碼

 netServer

var net=require("net");

/**
 * 創建server
 */
function t1(){
    var server=net.createServer(function(socket){
        //socket.end("good bye!");
        socket.write("hello,i'm server!");
        console.log("client connected! %j:%j",socket.remoteAddress,socket.remotePort);
        socket.on("data",function(data){
            console.log("recived from client:",data.toString());
        })
        socket.on("close",function(had_error){
            if(!had_error){
                console.log("client closed success! %j:%j",socket.remoteAddress,socket.remotePort);
            }
            else{
                console.log("client close error! %j:%j",socket.remoteAddress,socket.remotePort);
            }
        })
        socket.on("error",function(err){
            console.log("!!!err!!!",err);
        });
        //setTimeout(function(){
        //    socket.end("我結束了","utf8");
        //},3000);
    });
    server.listen({
        port:8889
    },function(){
        var address=server.address();
        console.log(" opened server on address %j ",address);
    });

    var a=1;
}
t1();

netSocket

var net = require("net");

/**
 * 初始化net clientSocket對象,測試發送數據,關閉連接
*/
function t1(autoclose){
    var inteval;
    var socket1=new net.Socket({
        readable:true,
        writable:true,
        allowHalfOpen:true
    });
    socket1.on("data",function(data){
        console.log("recived from server:"+data.toString());
    });
    socket1.on("close",function(){
        console.log(" client closed success ");
    });
    socket1.on("error",function(err){
        console.log(" client error: ",err);
    });
    socket1.connect({
        host:"localhost",
        port:8889
    },function(){
        console.log(" server connected");
        inteval=setInterval(function(){
            socket1.write("hello,i'm client!"+Math.random())
        },3000)
    });
    if(autoclose){
        setTimeout(function(){
            socket1.destroy();
            clearInterval(inteval)
            //socket1.end("我結束了","utf8");
        },3000);
    }
}

/**
 * 通過net.connect創建clientSocket對象
 */
function t2(){
    var client = net.connect({port: 8889},
        function() { //'connect' listener
            console.log('connected to server!!!');
            client.write('world!\r\n');
        });
    client.on('data', function(data) {
        console.log(data.toString());
        //client.end();
    });
    client.on('end', function() {
        console.log('disconnected from server');
    });

}

t1(false);
t1(true);
//t2();
//for(var i=0;i<1000;i++){
//    console.log("連接個數:",i+1);
//    t1(false);
//}

下圖為server控制台的截圖

 
使用Ctrl+C關閉client,clientsocket意外結束時,會觸發error事件,隨后觸發close事件
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM