Node学习笔记:建立TCP服务器和客户端之间的通信
结构:
socket是应用层和传输层的桥梁。(传输层之上的协议所涉及的数据都是在本机处理的,并没进入网络中)
涉及数据:
socket所涉及的数据是报文,是明文。
作用:
建立长久链接,供网络上的两个进程通信。
下面是Tcp服务端的代码:
var net = require('net');//模块引入 var listenPort = 8080;//监听端口 // 创建socket服务端,下面是对客户端的处理 var server = net.createServer(function(socket){ socket.setEncoding('binary'); socket.on('data',function(data){//接收到客户端传来的数据 console.log('client send:' + data); }); socket.write('Hello client!\r\n');//写入数据,客户端可以接收 socket.on('error',function(exception){//数据错误事件,比如客户端断开连接 console.log('socket error:' + exception); socket.end();//断开服务器 }); socket.on('close',function(data){ //客户端关闭事件,断开连接 console.log('client closed!'); }); }).listen(listenPort); //下面是服务器监听事件 server.on('listening',function(){//服务器开启 开始监听端口 console.log("server listening:" + server.address().port); }); server.on('connection',function(){//服务器和客户端建立起联系时执行 console.log("server 已经连接"); }); server.on("error",function(exception){//服务器错误事件 console.log("server error:" + exception); });
下面是TCP客户端的代码:
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');//正常关闭连接 });
运行两个node的结果: