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文档。
- node学习之路(四)net模块实现tcp通信
- 【Node.js基础篇】(十)使用net模块和Readline模块实现Socket通信
- Python网络通信之socket模块(四)基于Tcp/Ip的TCP交互通信serve/client的编写过程
- .NET下可复用的TCP通信层实现之TCP组件
- ESP8266--学习笔记(四)TCP通信--TCP-Client
- Node核心模块之Net
- Node.js:dgram模块实现UDP通信
- 【Node dgram模块实现UDP通信】
- 前端学习(四)node核心模块url
- 前端学习(四)node核心模块querystring
- 我的Node.js学习之路(四)--单元测试
- [NODE之四]http模块练习2
- Python学习日志(四)之模块
- .NET平台下可复用的Tcp通信层实现(续)
- .NET平台下可复用的Tcp通信层实现(续)
- Android FM模块学习之四源码解析(四)
- Node.js学习之TCP聊天程序
- node.js学习之创建TCP服务器
- Python爬虫利器三之Xpath语法与lxml库的用法
- Oracle数据库知识梳理---续(过滤和排序)
- Struts2文件下载(含多文件下载)
- 旋转裁剪算法
- Github 简明教程
- node学习之路(四)net模块实现tcp通信
- OBS源码修改小记
- eclipse插件_OpenExplorer
- APUE 3 -- 信号(signal)-I- :概念
- 最公共长子序列的长度
- 二叉查找树
- Spring配置之C3P0
- jquery-ui输入框自动补全(实用)
- 在虚拟机VMWare下为ubuntu扩展硬盘大小