nodejs socket

server.js
var net = require('net');
var clientList = [];

var HOST = '127.0.0.1';
var PORT = 6969;

var server = net.createServer();

server.on('connection', function(client) {
    console.log('CONNECTED: ' + client.remoteAddress +':'+ client.remotePort);
    client.name = client.remoteAddress + ':' + client.remotePort; 
    console.log(client);
    client.write('Hi ' + client.name + '!\n');    
    clientList.push(client);    
    client.on('data', function(data) {
        broadcast(data, client);
    });  
    client.on('close', function() { 
        clientList.splice(clientList.indexOf(client), 1);
    });
    
    client.on('error', function(e) { 
        console.log(e.errno); 
    });
    
});    

function broadcast(message, client) { 
    var cleanup = [];
    for(var i=0;i<clientList.length;i+=1) {      
        if(client !== clientList[i]) {  
            if(clientList[i].writable){
                clientList[i].write(client.name + " says " + message);      
            }else{
                cleanup.push(clientList[i]);
                clientList[i].destroy();
                console.log(cleanup);
            }
        }    
    }  
    for(i=0;i<cleanup.length;i+=1) {  
        clientList.splice(clientList.indexOf(cleanup[i]), 1)  
    }
}  

server.listen(PORT, HOST);
console.log('Server listening on ' + HOST + ':' + PORT);

 

client.js

 

var net = require('net');

var HOST = '127.0.0.1';
var PORT = 6969;

var client = new net.Socket();
client.connect(PORT, HOST, function() {

    console.log('CONNECTED TO: ' + HOST + ':' + PORT);
    // 建立连接后立即向服务器发送数据,服务器将收到这些数据 
    client.write('I am Chuck Norris!');

});

// 为客户端添加“data”事件处理函数
// data是服务器发回的数据
client.on('data', function(data) {

    console.log('DATA: ' + data);
    // 完全关闭连接
    //client.destroy();

});

// 为客户端添加“close”事件处理函数
client.on('close', function() {
    console.log('Connection closed');
});

 

posted on 2016-08-26 16:37  .carl  阅读(200)  评论(0编辑  收藏  举报

导航