Node.js 构建TCP服务

Posted hello word

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js 构建TCP服务相关的知识,希望对你有一定的参考价值。

构建TCP服务

  • 三次握手连接:
    1.客户端请求连接
    2.服务器响应
    3.开始传输
    服务端
// 构建TCP服务 服务端
const net = require('net')

const server = net.createServer()

server.on('connection', clientSocket => {
  console.log('有新的客户端连接了')
  //服务端通过 clientSocket 监听 data 事件
  clientSocket.on('data', data => {
    // console.log(data)
    // 把数据转换成字符串格式
    console.log('来自客户端消息:', data.toString())
  })
  // 通过clientSocket 给当前连接的客户端发送数据
  clientSocket.write('hello,我是服务端')
  // 服务端监听 data 事件,获取终端中输入的数据
  process.stdin.on('data', data => {
    // 把终端中输入的数据发送给客户端
    clientSocket.write(data.toString().trim())
  })
})

// 监听端口
server.listen(3000, () => console.log('Server runing at http://127.0.0.1:3000'))

客户端

// 构建TCP连接服务 客户端
const net = require('net')

const client = net.createConnection({
  host: '127.0.0.1',
  port: 3000
})

client.on('connect', () => {
  console.log('连接服务器成功了')
  // 当客户端与服务端建立连接成功以后,客户端就可以给服务器发数据了
  client.write('word,我是客户端')
  // 当客户端与服务端建立连接以后,我么可以监听准端的输入
  // 获取终端命令行中的输入发送给服务端
  process.stdin.on('data', data => {
    // console.log(data)
    // 这是获取到的终端命令行输入的数据
    // console.log(data.toString())
    // 把获取到的终端命令行输入的数据发给服务端
    // client.write(data)
    // 去除数据中的回车和空格再发送给服务端
    client.write(data.toString().trim())
  })
})

// 客户端监听 data 事件
// 当服务端发消息过来就会触发该事件
client.on('data', data => {
  // console.log(data)
  // 把数据转换成字符串格式
  console.log('来自服务端消息:', data.toString())
})?

案例:聊天室

服务端:

// 构建TCP服务 服务端
const net = require('net')

// 创建一个服务器实例
const server = net.createServer()

const clients = []

server.on('connection', clientSocket => {
  // 把当前连接的客户端通信接口存储到数据中
  clients.push(clientSocket)
  console.log('有新客户端连接')

  // 把服务端终端输入的内容群发给所有客户端
  process.stdin.on('data', data => {
    clientSocket.write('服务端公告:' + data.toString().trim())
  })

  clientSocket.on('data', data => {
    console.log('来自客户端消息:', data.toString())
    // 遍历所有的客户端连接发送数据
    clients.forEach(socket => {
      // 排除掉发消息自身的那个客户端
      if (socket !== clientSocket) {
        socket.write(data)
      }
    })
  })
})

server.listen(3500, () => {
  console.log('Server running At http://127.0.1.1:3500')
})

客户端:

// 构建TCP连接服务 客户端
const net = require('net')

// 创建一个客户端实例
const client = net.createConnection({
  host: '127.0.0.1',
  port: 3500
})

// 监听连接事件
client.on('connect', () => {
  console.log('客户端与连接服务器成功')
  // 把终端输入内容发给服务端
  process.stdin.on('data', data => {
    client.write(data.toString().trim())
  })
})

client.on('data', data => {
  console.log(data.toString())
})

以上是关于Node.js 构建TCP服务的主要内容,如果未能解决你的问题,请参考以下文章

深入浅出Node.js - 网络编程

一文搞懂如何使用Node.js进行TCP网络通信

Node.js 构建HTTP服务

Node.js 网络编程(下)实现TCPUDPWebSocket的创建

Node.Js + Socket.IO vs SignalR vs C# WebSocket 服务器

一文搞懂如何使用Node.js进行TCP网络通信