node学习之路(四)net模块实现tcp通信

来源:互联网 发布:互联网java开发 编辑:程序博客网 时间:2024/06/06 07:35

点击进入官网net模块API
在node中net模块专门用于tcp服务器和tcp客户端的通信。

1.实现步骤如下

创建tcp连接
var server=net.createServer([options],[callBackFunc1]);
监听客户端请求
server.listen(port,[host],[backlog],[callbackFunc2]);
参数说明
callBackFunc1(可选参数,当服务器端和客户端成功连接时调用此函数。其相当于连接时触发的connection函数。);
callBackFunc2(可选参数,当服务器监听事件触发后调用此函数。PS:应该是在服务器端和客户端成功连接之前触发。)

2.server的事件

server事件如下:
connection(建立连接时) close(连接关闭时) error(连接出错时) listen(监听客户端)
server中常用的方法:
address() close()

1)connection事件触发时的回调函数中存在参数socket(当服务器端和客户端成功连接后返回的socket对象。)
socket对象中的常用方法:address(),pause() resume(),connect(),ref(),unref()
2)error事件(连接出错时触发) 回调函数中的参数是错误类型。

server.on("error",function(e){console.log(e)//e为错误类型});

3.socket端口对象

1)address()方法使用

`server.on("connection",function(socket){     var address=socket.address(); });

注:address的值具有的属性如下
port(连接客户端的端口号)
address(socket端口所属的ip地址)
family(IP地址的类型“ipv4”)

2) pause()和resume()方法

`server.on("connection",function(socket){     socket.pause();     //暂停socket的data事件触发此时服务端会将客户端的数据暂存在一个单独的缓存区     socket.resume();     //恢复socket的data事件触发 });

3)pipe()将客户端发送的数据书写到文件或其他目标对象中

var file=require("fs").createWriteStream("../test.txt");`server.on("connection",function(socket){socket.pipe(file,[options]);//file 为必须的参数,表示写入数据的对象。options为可选的}

4)setTimeout(timeout,callback);用来设置客户端连接的超时时间

`server.on("connection",function(socket){socket.setTimeout(5,function(){console.log("连接5秒了!");//连接超时后调用的函数;并且此时会触发timeout事件});socket.on("timeout",function(){console.log("连接超时");});}

5)socket可触发的事件
data(客户端发送数据时触发)
timeout(连接超时触发此事件)
connect(客户端的事件,当一个套接字连接成功建立了发出的。在server的connection事件之后触发);
error(客户端触发的事件)
close(客户端触发的事件)

注:本文仅列出net模块中常用的部分知识。详情请查看net的API文档。