node.js学习笔记之创建TCP客户端
2017-07-27 20:18
471 查看
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();
})
当同时开启两台客户端时运行结果:
server.js:
client.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); });
相关文章推荐
- Node.js 学习笔记--- (2)创建一个简单的博客工程
- node.js 学习笔记一:创建一个服务器
- node.js学习笔记之创建UDP服务器与客户端
- node.js在windows下的学习笔记(5)---用NODE.JS创建服务器和客户端
- node.js学习笔记(3)--Express创建的项目分析
- node.js 学习笔记二:创建属于自己的模块
- Node.js中的模块机制学习笔记
- node.js学习笔记之generator
- node.js学习笔记之写文件
- nodejs+nginx+mongoDB部署项目学习笔记
- node.js 基础学习笔记1
- node.js学习笔记5——核心模块1
- 学习笔记-NODE.JS, EXPRESS, JADE, AND MONGODB
- node.js学习之创建HTTP服务器
- node.js+mysql学习笔记
- Node.js + mongoose + mongodb 学习笔记
- webpack 学习笔记 --- node.js开发
- node.js学习笔记
- Node.js初学笔记(使用InteliJ IDEA创建的项目)
- Node.js + MongoDB 后端学习笔记