net
模块是Node.js的核心模块之一,它提供了用于创建基于网络的应用程序的API。net
模块主要用于创建TCP服务器和TCP
客户端,以及处理网络通信。
TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,用于在计算机网络上进行数据传输。它是互联网协议套件(TCP/IP)的一部分,是应用层和网络层之间的传输层协议。
TCP的主要特点包括:
服务端之间的通讯可以直接使用TCP通讯,而不需要上升到http层
server.js
创建一个TCP服务,并且发送套接字,监听端口号3000
import net from 'net'
const server = net.createServer((socket) => {
setInterval(()=>{
socket.write('XiaoMan')
},1000)
})
server.listen(3000,()=>{
console.log('listening on 3000')
})
client.js
连接server端,并且监听返回的数据
import net from 'net'
const client = net.createConnection({
host: '127.0.0.1',
port: 3000,
})
client.on('data', (data) => {
console.log(data.toString())
})
创建一个TCP服务
import net from 'net'
const http = net.createServer((socket) => {
socket.on('data', (data) => {
console.log(data.toString())
})
})
http.listen(3000,()=>{
console.log('listening on 3000')
})
net.createServer
创建 Unix
域套接字并且返回一个server对象接受一个回调函数
socket
可以监听很多事件
close
一旦套接字完全关闭就触发connect
当成功建立套接字连接时触发data
接收到数据时触发end
当套接字的另一端表示传输结束时触发,从而结束套接字的可读端通过node http.js 启动之后我们使用浏览器访问一下
可以看到浏览器发送了一个http get 请求 我们可以通过关键字get 返回相关的内容例如html
import net from 'net'
const html = `TCP Server
`
const reposneHeader = [
'HTTP/1.1 200 OK',
'Content-Type: text/html',
'Content-Length: ' + html.length,
'Server: Nodejs',
'\r\n',
html
]
const http = net.createServer((socket) => {
socket.on('data', (data) => {
if(/GET/.test(data.toString())) {
socket.write(reposneHeader.join('\r\n'))
socket.end()
}
})
})
http.listen(3000, () => {
console.log('listening on 3000')
})