本文實例講述了通過node.js的net模塊實現nodejs socket服務端和客戶端簡單通信功能,可以用作客戶端對服務端的端口監聽以及事件回執。
server端代碼
var net = require('net');
//模塊引入
var listenPort = 8080;//監聽端口
var server = net.createServer(function(socket){
// 創建socket服務端
console.log('connect: ' +
socket.remoteAddress + ':' + socket.remotePort);
socket.setEncoding('binary');
//接收到數據
socket.on('data',function(data){
console.log('client send:' + data);
});
socket.write('Hello client!\r\n');
// socket.pipe(socket);
//數據錯誤事件
socket.on('error',function(exception){
console.log('socket error:' + exception);
socket.end();
});
//客戶端關閉事件
socket.on('close',function(data){
console.log('client closed!');
// socket.remoteAddress + ' ' + socket.remotePort);
});
}).listen(listenPort);
//服務器監聽事件
server.on('listening',function(){
console.log("server listening:" + server.address().port);
});
//服務器錯誤事件
server.on("error",function(exception){
console.log("server error:" + exception);
});
client端代碼
var net = require('net');
var port = 8080;
var host = '127.0.0.1';
var client= new net.Socket();
//創建socket客戶端
client.setEncoding('binary');
//連接到服務端
client.connect(port,host,function(){
client.write('hello server');
//向端口寫入數據到達服務端
});
client.on('data',function(data){
console.log('from server:'+ data);
//得到服務端返回來的數據
});
client.on('error',function(error){
//錯誤出現之后關閉連接
console.log('error:'+error);
client.destory();
});
client.on('close',function(){
//正常關閉連接
console.log('Connection closed');
});
