node.js学习笔记之创建TCP客户端
来源:互联网 发布:php java .net的区别 编辑:程序博客网 时间:2024/06/08 15:37
server.js
/*创建TCP服务器*/var net = require('net');var server = net.createServer();server.on('connection',function (socket) { socket.setEncoding('utf8'); console.log('客户端与服务端链接已建立'); socket.on('data',function (data) { console.log('已收到客户端发来的数据:'+data);//控制台输出 socket.write('确认数据:'+data);//发送给客户端 }); //监听与客户端连接的错误事件 socket.on('error',function (err) { console.log('与客户端通信或链接过程中发生了一个错误,错误代码为:%s',err.code); //当发生错误时,用destroy方法销毁该socket端口。确保不会再被利用 socket.destroy(); }) //监听客户端的end事件 socket.on('end',function () { console.log('客户端连接被关闭') //默认情况下,运行TCP服务器的应用程序不会自动退出,即使客户端全部关闭。 //我们可以使用server.unref();方法退出应用程序 //当时用unref()方法后,我们可以用server.ref();方法阻止应用程序的推出 server.unref(); }); //当socket端口彻底关闭时,触发socket端口的close事件 socket.on('close',function (had_error) { if(had_error){ console.log('由于一个错误导致socket端口被关闭'); server.unref(); }else { console.log('socket端口被正常关闭') } }); server.getConnections(function (err, count) { if(count == 2) server.close(); })});server.listen(3000,'localhost');//当所有客户端连接被关闭后,TCP服务器被自动关闭server.on('close',function () { console.log('TCP服务器被关闭');})client.js:
/*创建TCP客户端*/var net = require('net');//创建TCP客户端var client = new net.Socket();client.setEncoding('utf8');client.connect(3000,'localhost',function () { console.log('已连接到服务器'); client.write('你好'); //指定10秒后关闭与服务器的连接 setTimeout(function () { //客户端的socket端口对象可以调用end方法来结束与服务端的连接,同时服务端添加end事件的监听事件即可。 client.end('再见','utf8'); },10000);});client.on('data',function (data) { console.log('已接受服务器端发送的数据:'+data);});//监听与服务端连接的错误事件client.on('error',function (err) { console.log('在于服务器连接或通信过程中发生了一个错误,错误代码为%s',err.code); //当发生错误时,用destroy方法销毁该socket端口。确保不会再被利用 client.destroy();})当同时开启两台客户端时运行结果:
使用socket端口对象的write方法发送小尺寸文件server.js:
/*使用socket端口对象的write方法发送小尺寸文件*/var net = require('net');var server = net.createServer();var fs = require('fs');server.on('connection',function (socket) { console.log('客户端与服务端链接已建立'); socket.setEncoding('utf8'); var readStream = fs.createReadStream('./test.txt'); readStream.on('data',function (data) { var flag = socket.write(data); console.log('write方法返回的值为:'+flag); console.log('缓存队列当前缓存了%d字符',socket.bufferSize); }) socket.on('data',function (data) { console.log('已接收客户端发送的数据:') }); socket.on('drain',function () { console.log('TCP缓存区中数据已全部发送。'); }); //监听客户端的end事件 socket.on('end',function () { console.log('客户端连接被关闭') //默认情况下,运行TCP服务器的应用程序不会自动退出,即使客户端全部关闭。 //我们可以使用server.unref();方法退出应用程序 //当时用unref()方法后,我们可以用server.ref();方法阻止应用程序的推出 server.unref(); });});server.listen(3000);client.js:
var net = require('net');var client = new net.Socket();client.setEncoding('utf8');client.connect(3000,'localhost',function () { console.log('已连接到客户端'); client.write('您好'); //指定10秒后关闭与服务器的连接 setTimeout(function () { //客户端的socket端口对象可以调用end方法来结束与服务端的连接,同时服务端添加end事件的监听事件即可。 client.end('再见','utf8'); },10000);});client.on('data',function (data) { console.log('已收到服务端发来的数据') console.log(data);});
阅读全文
0 0
- node.js学习笔记之创建TCP客户端
- node.js学习笔记之创建UDP服务器与客户端
- node.js学习之创建TCP服务器
- node.js学习笔记之HTTP客户端
- node.js学习笔记之HTTP获取客户端请求信息
- Node.js学习之TCP聊天程序
- node.js学习之创建HTTP服务器
- Node.js学习笔记5【http服务器与客户端】
- node.js学习笔记之安装详解
- node.js学习笔记之常用命令
- node.js学习笔记之安装详解
- Node.js学习笔记之二:回调
- Node.js学习笔记之三:事件
- node.js学习笔记之写文件
- node.js学习笔记之Buffer类
- Node 学习笔记—Node.js 核心 API 之 Util
- Node.JS学习笔记
- node.js学习笔记
- python访问复数的实部,虚部和模值
- Eclipse 快捷键
- Oracle数据库imp/exp导入导出问题
- Django学习6:利用POST方式提交表单
- ACM常用C/C++函数
- node.js学习笔记之创建TCP客户端
- ubuntu 打开终端快捷键
- JAVA中日期类Date、日历类Calendar、DateFormat类
- hdu 6043 KazaQ's Socks
- cluster_state:fail error clusterdown hash slot not served redis集群启动失败 解决办法
- 数据类型转换
- XListView+ImageLoader+AsyncTask+网络获取数据综合
- 预测编码
- C++7.27知识