码迷,mamicode.com
首页 > Web开发 > 详细

Node.js 构建TCP服务

时间:2019-11-10 15:15:17      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:host   端口   聊天   成功   监听   process   cti   foreach   数据   

构建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服务

标签:host   端口   聊天   成功   监听   process   cti   foreach   数据   

原文地址:https://www.cnblogs.com/liea/p/11829607.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!