当前位置: 首页 > news >正文

uniapp使用tcp和udp的区别和例子

在Node.js中,主要有三种socket:TCP,UDP和Unix域套接字。以下分别介绍这TCP/UDP的使用方法和示例:

TCP socket
TCP socket提供了可靠的、面向连接的通信流,适用于需要可靠传输的应用,例如Web浏览器的HTTP请求。在Node.js中,可以使用net模块创建TCP服务器和客户端。以下是一个创建TCP服务器和客户端的示例:

服务器端代码(app.js):

var express = require('express');  
var app = express();  
var net = require('net');  
var HOST = '127.0.0.1';  
var PORT = 8081;  
  
net.createServer(function(sock) {  
  console.log('获得一个连接');  
  sock.on('data', function(data) {  
    console.log('从客户端接受的数据: ' + data);  
    sock.write('向客户端回发数据 "' + data + "\n");  
    sock.end("关闭socket"); // 触发客户端和服务端的close事件监听  
  });  
}).listen(PORT, HOST);

客户端代码(client.js):

var net = require('net');  
var HOST = '127.0.0.1';  
var PORT = 8081;  
  
var client = net.createConnection(PORT, HOST);  
client.on('connect', function() {  
  console.log('连接到服务器');  
  client.write('客户端发送数据\n');  
});  
client.on('data', function(data) {  
  console.log('从服务器接受的数据: ' + data);  
});

UDP socket
UDP socket提供了无连接、不可靠的通信流,适用于不需要可靠传输的应用,例如实时游戏或VoIP应用。在Node.js中,可以使用dgram模块创建UDP服务器和客户端。以下是一个创建UDP服务器和客户端的示例:

服务器端代码(server.js):

var dgram = require('dgram');  
var server = dgram.createSocket('udp4');  
server.on('listening', function() {  
  var address = server.address();  
  console.log('UDP服务器正在监听 %s:%d', address.address, address.port);  
});  
server.on('message', function(message, remote) {  
  console.log('从 %s:%d 收到消息: %s', remote.address, remote.port, message);  
  server.send('向客户端回发数据 "' + message + "\n", remote.port, remote.address);  
});  
server.bind(12345); // 绑定端口号,并开始监听消息

客户端代码(client.js):

var dgram = require('dgram');  
var message = Buffer.from('客户端发送数据\n');  
var client = dgram.createSocket('udp4');  
client.send(message, 0, message.length, 12345, 'localhost', function(err, bytes) {  
  if (err) throw err;  
  console.log('UDP客户端已发送消息');  
});  
client.on('message', function(message, remote) {  
  console.log('从 %s:%d 收到消息: %s', remote.address, remote.port, message);  
});

 

http://www.lryc.cn/news/276861.html

相关文章:

  • 静态网页设计——个人图书馆(HTML+CSS+JavaScript)(dw、sublime Text、webstorm、HBuilder X)
  • APP出海需知——Admob广告变现竞价策略
  • 微服务实战系列之API加密
  • android apk文件的签名问题
  • ATTCK视角下的信息收集:主机发现
  • Redis 主从、哨兵和分片集群简单介绍
  • 群晖NAS+DMS7.0以上版本+无docker机型安装zerotier
  • Pinia持久化存储插件 pinia-plugin-persist
  • 链家JAVA笔试题
  • 当试图回复传入消息时,消息应用程序会闪烁
  • Hubery-个人项目经历记录
  • Ubuntu18.04 安装 qt 5.15.2
  • 【Linux Shell】6. echo 命令
  • Dell 机架式服务器 - 高级定制服务
  • C++ 中关键字 Static
  • 系统学习Python——警告信息的控制模块warnings:警告过滤器-[重写默认的过滤器]
  • C++力扣题目-- 二叉树层序遍历
  • 前端实现回车键触发搜索
  • k8s yaml文件pod的生命周期
  • MPEG4Extractor
  • 我在工作一年时怎么都看不懂的编程写法。今天手把手教给你
  • ThinkPHP5多小区物业管理系统源码(支持多小区)
  • 2024 年 API 安全:预测和趋势
  • 3D模型UV展开原理
  • SPL-cmcRVFL+
  • Vue3+TS+Vite 构建自动导入开发环境
  • 长期使用外接键盘,外物压着自带键盘,容易导致华硕飞行堡垒FX53VD键盘全部失灵【除电源键】
  • JavaScript-循环嵌套断点调试-笔记
  • 1042: 数列求和3 和 1057: 素数判定 和 1063: 最大公约与最小公倍
  • [足式机器人]Part2 Dr. CAN学习笔记-动态系统建模与分析 Ch02-8 Bode Plot伯德图