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

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

时间: 2024-10-25 03:09:13

Node.js 构建TCP服务的相关文章

Node.js 构建HTTP服务

Node中的HTTP模块 TCP和UDP都属于网络传输协议,如果要构架高效的网络应用,就应该从传输层着手,但是对于经典的浏览器网页和服务器端通信场景,如果单纯的使用更底层的传输协议则会变得麻烦. 所以对于经典的B(browser)S(server)通信,基于传输层之上专门制定了更上一层的通信协议:HTTP,用于浏览器和服务端进行通信,由于HTTP协议本身并不考虑数据如何传输及其他细节问题,所以属于应用层协议. Node提供了基于HTTP和HTTPS模块用于HTPP和HTTPS的封装. count

Node 之 构建TCP服务器

OSI参考模型将网络通信功能划分为7层,即物理层.数据链路层.网络层.传输层.会话层.表示层和应用层.TCP协议就是位于传输层的协议.Node.js在创建一个TCP服务器的时候使用的是net(网络)模块. 使用Node.js创建TCP服务器,首先要使用require(‘net’)来加载net模块,之后使用net模块的createServer方法就可以创建一个TCP服务器. net.createServer([options],[connectionListener]) options是一个对象参

Node.js之HTPP服务一

几乎每门编程语言都会包括网络这块,Node.js也不例外.今天主要是熟悉下Node.js中HTTP服务.其实HTTP模块是相当低层次的,它不提供路由.cookie.缓存等,像Web开发中不会直接使用,但还是要熟悉下,这样也方便以后的学习. 一.统一资源标识符URL 这个是非常常见的,在Node.js中有几种处理. http://user:[email protected]:80/resource/path/?query=string#hash 协议://身份认证@主机名.com:端口/路径/搜索

Node.js发布http服务

Node.js发布http服务 2018-11-09 09:43:03   Visit  0 简单服务 var http = require(\'http\'); http.createServer(function (request, response) { // 发送 HTTP 头部 // HTTP 状态值: 200 : OK // 内容类型: text/plain response.writeHead(200, {\'Content-Type\': \'text/plain\'}); //

使用Node.js构建命令行工具

使用Node.js和npm构建脚本或命令行工具. 一.包装shell命令 第一步:创建一个npm项目 npm init; 第二步:创建一个js文件(index.js),包含要运行的脚本 !/usr/bin/env node console.log('Hello, world!'); 需要注意的是,需要添加片段标识符"!/usr/bin/env node",告知脚本使用Node执行. 第三步:在package.json文件中补充bin部分 { ... "author"

基于Node.js搭建TCP聊天服务器

作者:zhanhailiang 日期:2014-11-23 原理: 服务器端维持所有的客户端连接列表: 当服务器收到某个客户端的消息时,将其广播给其它的客户端连接: 当某个客户端连接退出时,将其从客户端连接列表中剔除: 实现: var net = require('net'); var server = net.createServer(); var sockets = [];   // accept connection server.on('connection', function(soc

基于OpenResty和Node.js的微服务架构实践

什么是微服务? 传统的单体服务架构是单独服务包,共享代码与数据,开发成本较高,可维护性.伸缩性较差,技术转型.跨语言配合相对困难.而微服务架构强调一个服务负责一项业务,服务可以单独部署,独立进行技术选型和开发,服务间松耦合,服务依赖的数据也独立维护管理.虽然微服务存在部署复杂.运维难度较大.分布式事务控制难.容错要求高等缺点,但总体而言,微服务的优点远大于其复杂性. 微服务架构需要注意哪些问题? 微服务架构,首先考虑客户端与服务端之间的通信问题.有两种解决办法,一是客户端与多个服务端直接进行通信

LINUX下用Nginx和Node.js构建一个简单的项目(1)

由于我之前租了一个阿里云服务器,最近又开始学学Node.js,因此准备写点东西把过程记录一下.至于服务器上的Web环境安装阿里云有十分详细的安装说明,这里就略过了... 以下是我的Web环境: 服务器系统为LINUX 64位 Web:nginx Nginx:1.4.4 Php:5.3.29 Mysql:5.1.73 1.安装Nodejs 首先需要查看系统的Python和Make版本信息是否符合Node.js的安装环境.指令如下: # python # make -v 在官网下载nodejs(ht

node js构建一个vue并启动它

安装node js,到运行VUE的简单过程 1.安装node js 下载地址:http://nodejs.cn/download/2.安装完成后运行Node.js command prompt(node -v查看安装版本) 3.安装npm(由于现在版本的nodejs已经集成npm所以无需安装,可以用npm -v 查看版本) 4.注册cnpm来代替npm 使用命令:npm install cnpm -g --registry=https://registry.npm.taobao.org5.安装v