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

xiaoxiao2021-02-28  162

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

转载请注明原文地址: https://www.6miu.com/read-50246.html

最新回复(0)