TCP实现HTTP服务

简介: TCP实现HTTP服务

在之前的篇章中我们已经讲过七层参考模型了,今天我们从传输层实现应用层http服务

使用nodejs原生net模块就可以打通TCP传输层并且提供一个端口号进行监听

创建一个TCP服务

import net from 'net'
const server = net.createServer((socket) => {
    socket.on('data', (data) => {
        console.log('data is', data.toString())
        socket.write('hello from server')
    })
})
server.listen(8080, () => {
    console.log('server is listening', server.address())
})

net.createServer创建 Unix 域套接字并且返回一个server对象接受一个回调函数

socket可以监听很多事件

  1. close 一旦套接字完全关闭就触发
  2. connect 当成功建立套接字连接时触发
  3. data 接收到数据时触发
  4. end 当套接字的另一端表示传输结束时触发,从而结束套接字的可读端

通过node index.js 启动之后我们使用浏览器访问一下

可以看到浏览器发送了一个http get 请求 我们可以通过关键字get 返回相关的内容例如html

import net from 'net'
let html = `
   <h1>BLG</h1>
`
let headers = [
    'HTTP/1.1 200 OK',
    'Content-Type: text/html',
    `Content-length:${html.length} `,
    `Date:${new Date()}`,
    'Connection: keep-alive',
    //'Transfer-Encoding: chunked',
    '\r\n',
    html
]
const server = net.createServer((socket) => {
    socket.on('data', (data) => {
        let msg = data.toString()
        if(/GET/.test(msg)){
            console.log(headers.join('\r\n'));
            socket.write(headers.join('\r\n'))
            socket.end()
        }
        // console.log('data is', data.toString())
        // socket.write('hello from server')
    })
})
server.listen(8080, () => {
    console.log('server is listening', server.address())
})

通过拦截get请求模拟请求头相关报文去返回一个html看浏览器是否能够识别

也是成功的返回了

目录
相关文章
|
1月前
|
Web App开发 监控 Java
|
3月前
|
缓存 网络协议 安全
计算机网络 TCP、RPC、GRPC、HTTP 对比
【1月更文挑战第1天】计算机网络 TCP、RPC、GRPC、HTTP 对比
|
9天前
|
网络协议 Linux Windows
TCP/IP、Http、Socket之间的区别
TCP/IP、Http、Socket之间的区别
|
11天前
|
网络协议 Java API
深度剖析:Java网络编程中的TCP/IP与HTTP协议实践
【4月更文挑战第17天】Java网络编程重在TCP/IP和HTTP协议的应用。TCP提供可靠数据传输,通过Socket和ServerSocket实现;HTTP用于Web服务,常借助HttpURLConnection或Apache HttpClient。两者结合,构成网络服务基础。Java有多种高级API和框架(如Netty、Spring Boot)简化开发,助力高效、高并发的网络通信。
|
15天前
|
域名解析 网络协议 应用服务中间件
阿里云服务器配置免费https服务
阿里云服务器配置免费https服务
|
1月前
|
Windows
node搭建本地https和wss服务
node搭建本地https和wss服务
25 0
|
2月前
|
XML 自然语言处理 前端开发
NLP自学习平台提供了API接口调用服务,这些接口可以通过HTTP GET请求进行调用
【2月更文挑战第7天】NLP自学习平台提供了API接口调用服务,这些接口可以通过HTTP GET请求进行调用
18 2
|
2月前
|
XML JSON 中间件
快速入门Gin框架搭建HTTP服务
快速入门Gin框架搭建HTTP服务
20 0
|
2月前
|
JSON Go 数据格式
一文搞懂Go快速搭建HTTP服务
一文搞懂Go快速搭建HTTP服务
24 0
|
3月前
|
Java
Netty实现HTTP服务
Netty实现HTTP服务
40 0