点击进入官网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文档。