Node教学--02 TCP服务器(小聊天工具)

来源:互联网 发布:oa办公自动化软件 编辑:程序博客网 时间:2024/05/01 07:43

上一节中介绍了使用http模块。这一节我们使用net模块,这个模块包含了Node需要的所有TCP功能。

先给出个简单版的模块,与服务器连接之后,服务器将返回Hi,Bye ,然后断开连接

var net = require("net");var chatServer = net.createServer();chatServer.on("connection",function(client){client.write("Hi!\n");client.write("Bye!\n");client.end();});chatServer.listen(9000);


下面是这个小工具的完整版

/*获取net模块*/var net = require("net");/*创建服务器*/var chatServer = net.createServer();/*存储已连接的客户端*/var clientList = [];/*连接之后调用事件*/chatServer.on("connection",function(client){/*取客户端的地址以及端口作为客户端名称*/client.name = client.remoteAddress + ':' + client.remotePort;/*客户端弹出接待语*/client.write('Hi'+client.name+"\n");/*服务器端显示新加入的客户端*/console.log(client.name+"joined");/*将新客户端加入已连接数组*/clientList.push(client);/*客户端接收数据之后,进行信息的群发*/client.on("data",function(data){broadcast(data,client);})/*客户端退出操作*/client.on("end",function(){console.log(client.name+"quit");/*从当前的客户端开始截取一个单位,并替换为xx,如果没有写,就将这项删除,节点上的销毁*/clientList.splice(clientList.indexOf(client),1);})/*连接错误,服务器端进行错误提示*/client.on("error",function(e){console.log(e);})});/*信息群发函数*/function broadcast(message,client){/*无效连接列表*/var cleanup = [];/*遍历所有客户端*/for(var i =0;i<clientList.length;i++){/*对非发送方客户端进行操作*/if(client!== clientList[i]){/*判断该客户端是否可写*/if(clientList[i].writable){/*发送给其他客户端信息*/clientList[i].write(message);}else{/*将该客户端推入清除列表*/cleanup.push(clientList[i]);/*销毁该客户端,实际上的销毁*/clientList[i].destroy();}}}}/*启动端口监听*/chatServer.listen(9000);
由于涉及到信息的交互  所以这里我们需要用telnet,linux可以直接用,windows的话默认是关闭的,大家可以百度下 如何开启telnet 非常简单



成功之后  可以开启多个telnet   进行单机版的多客户端沟通

下面给出源码链接

2 0
原创粉丝点击