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())
})


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM