学海无涯,知识是永远学不完的,前端的知识还没完全搞透,又想来折腾下nodejs
了,不管了,先广度,然后再深度,前端体系的知识再怎么着也得都有所了解,首先就从nodejs
的TCP
来开始学。通过写文章来记录学习的点点滴滴,方便日后回顾的时候更容易理解。
什么是TCP
TCP
是一种传输层协议,它可以让你将数据从一台计算机完整有序的传输到另一台计算机。基于这样的特点,我们常见的HTTP
都是基于TCP
协议的。
特点
- 面向字节:
TCP
对消息格式没有严格的约束,对字符以及字符编码是完全远程的。- 可靠性:由于
TCP
是基于确认和超时实现一系列的机制来达到可靠性的要求,保证了连接之间的可靠性。- 流控件:
TCP
是通过一种叫流控制的方式来确保两点之间传输数据的平衡。- 拥堵控制:
TCP
有一种内置的机制能够控制数据包的延迟率及丢包率不会太高,以此来确保服务的质量。
TCP
连接由服务端和客户端组成,这里通过nodejs
的API
来实现一个简单的聊天程序,在nodejs
中创建TCP
服务端和客户端使用的是net
包下面的API
,在使用的时候,需要先通过const net = require('net')
将net
引入进来。
服务端
服务端是通过createServer
来创建一个服务器,然后再使用listen
来绑定一个端口用于监听。服务端的代码如下所示:
const net = require('net')
let count = 0;//用于记录连接的个数
module.exports = function(){
let server = net.createServer((conn) => {
conn.setEncoding('utf8');
console.log('连接成功');
count ++;
conn.write('连接成功,一共有有'+count+'人在线');
conn.on('close',() => {
count --;
console.log('一共有有'+count+'人在线')
})
conn.on('end',() => {
console.log('结束')
})
conn.on('data',(data) => {
data = data.replace('\r\n','');
console.log(data);
})
})
server.listen(3000,() => {
console.log('开始监听')
})
}
conn.setEncoding('utf8');
用于设置字符编码。
close:用于监听客户端关闭连接。
end:结束连接时触发。
data:用于接收客户端发送的数据。
创建完后服务端后,开始可以使用telnet
进行连接,打开系统的终端,输入telnet
命令,再输入telnet 127.0.0.1 3000
进行连接,连接成功后将提示成功的信息,如下所示:
![](https://img.haomeiwen.com/i17463956/31debb481bf1a9e1.png)
在终端中输入文字,然后再按回车,在服务端可以接收客户端输入的文字信息。
客户端
客户端主要是使用createConnection
进行连接,在该方法中传入服务端的端口号和IP地址,就可以进行连接服务端了。如下所示:
const net = require('net')
module.exports = function(){
let client = net .createConnection(3000,'127.0.0.1');
client.setEncoding('utf8');
client.on('connect',() =>{
client.write('我是客户端001');
})
}
createConnection
:创建连接
connect
:连接成功后执行该回调。
个人博客
网友评论