基于nodejs的tcp服务器与客户端
2015-12-11 11:26
696 查看
不得不说nodejs的强大API实现了之前复杂网络编程的简单化。
一下是server端的js程序,实现各个socket连接的轮询。
以下是client端的js程序,可以不使用telnet进行tcp连接。client端也有连接断开重连功能。
一下是server端的js程序,实现各个socket连接的轮询。
var net = require('net'); var server = net.createServer(); var sockets = []; server.on('error', function (err) { console.log('error occured', err.message); }); server.on('close',function() { console.log('server closed'); }); server.on('connection', function (socket) { sockets.push(socket); // console.log(socket); socket.on('data', function (data) { console.log('got data : ' + data); sockets.forEach(function (otherSocket) { if(socket !== otherSocket){ otherSocket.write(data); }; }); socket.on('close', function(){ console.log('connection closed'); var index = sockets.indexOf(socket); sockets.splice(index,1); }); }); }); server.listen(4000);
以下是client端的js程序,可以不使用telnet进行tcp连接。client端也有连接断开重连功能。
var net = require('net'); var port = 4000; var host = 'localhost'; var quitting = false; var conn; var retryTimeout = 3000; var retriedTimes = 0; var maxRetrieds = 10; process.stdin.resume(); process.stdin.on('data', function (data) { if(data.toString().trim().toLowerCase() === 'quit'){ quitting = true; conn.end(); process.stdin.pause(); } else { conn.write(data); } }); (function connect() { function reconnect() { if(retriedTimes > maxRetrieds){ throw new Error('give up'); } else { retriedTimes += 1; setTimeout(connect, retryTimeout); } } conn = net.createConnection(port); conn.on('connect', function () { retriedTimes = 0; console.log('connected to server'); }); conn.on('error', function (err) { console.log('err occured :' + err.message); }); conn.on('close', function () { if(!quitting){ console.log('reconnect will begin'); reconnect(); } else { console.log('see you next'); } }) } () );
相关文章推荐
- SQL Server Connection Strings for ASP.NET Web Applications https://msdn.microsoft.com/en-us/library/jj653752.aspx
- http://www.cnblogs.com/lukun/archive/2011/03/14/1983282.html
- retrofit2.0中使用okHTTP post get put 过滤请求内容或添加内容
- Exchange2010 owa 访问 http 500 内部服务器错误
- Http协议对于java和asp.net的异同
- HTTP 协议详解(转载)
- HTTP Request
- iOS开发之网络编程(一)
- https
- HTTP Headers
- ios9.0 http请求设置
- AsyncHttpClien访问网络案例分析
- 海康网络摄像机YV12转换为BGR,由opencv Mat显示
- 网络存储IP SAN与IB SAN
- 基于Java HttpClient和Htmlparser实现网络爬虫代码
- TCP/IP、Http、Socket的区别
- matlab BP神经网络
- 跑步进入全站 HTTPS ,这些经验值得你看看
- Haproxy HTTPS VS Nginx HTTPS
- http的无状态无连接到底是什么含义