IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> nodejs + uniapp 开发安卓APP实现UDP广播 -> 正文阅读

[网络协议]nodejs + uniapp 开发安卓APP实现UDP广播

用nodejs编写UDP服务端,uniapp开发安卓APP客户端UDP
服务端效果图:
在这里插入图片描述
客户端效果图:
在这里插入图片描述
UDP广播服务端 nodejs 代码:

var dgram = require('dgram');
var server = dgram.createSocket('udp4');

server.on('close',()=>{
    console.log('socket已关闭');
});

server.on('error',(err)=>{
    console.log(err);
});

server.on('listening',()=>{
    console.log('socket正在监听中...');
    server.setBroadcast(true);//开启广播
    server.setTTL(128);//路由一跳TTL减一,减到零抛弃数据包
    //server.send('hello i am server',8061,'192.168.1.255');
    //在send {msg=close} 可以发送 colse 事件
});

//通过message事件接收数据,
server.on('message',(msg,rinfo)=>{
    console.log(`receive message from ${rinfo.address}:${rinfo.port}`);
    	
	var newtopic = new Buffer.from(msg,"utf-8").toString();//将十六进制的消息转换成string
	console.log(newtopic)
	
	//给客户端回消息
    server.send('Hi Client',8061,'192.168.1.255');	
	
});

//绑定本机的端口和ip地址,要接收数据的话必须绑定
server.bind('8060','192.168.1.196');

UDP广播客户端 uniapp源码:

//引入需要用到的安卓包
var DatagramPacket = plus.android.importClass('java.net.DatagramPacket'); //udp接收信息引用的java类
var DatagramSocket = plus.android.importClass('java.net.DatagramSocket'); //udp创建udp引用java类
var InetAddress = plus.android.importClass('java.net.InetAddress'); //绑定ip引用java类
var NetworkInterface = plus.android.importClass('java.net.NetworkInterface'); //获取主机ip
var JString = plus.android.importClass('java.lang.String'); //字符串转换类

var socket;
var port = 8060;  //广播端口
var getPort = 8061;  //本机端口
var timeout = 6000;  //超时时间

try {

	if (DatagramSocket == undefined) {
		return;
	}
	// 创建广播地址 
	var ip = InetAddress.getByName("192.168.1.255");
	
	// 绑定本机接收UDP反馈消息的端口号
	socket = new DatagramSocket(getPort);
	
	// 设置接收超时时长   
	socket.setSoTimeout(timeout);

	// 发送广播数据 					
	var sendData = Array.prototype.slice.call((new Buffer(`hello server`)), 0);
	var sendPacket = new DatagramPacket(sendData, sendData.length, ip, port);					
	console.log('广播地址:'+ip.getHostAddress(), '端口号:'+sendPacket.getPort())					
	socket.send(sendPacket);
	
	// 接收数据 
	var isReceive = true;
	while (isReceive) {
		try {
			// 设置接收缓存,需要用0填充,否则为 null 无法接收。   
			var buffer = new Array(1024).fill(0);
			var packet = new DatagramPacket(buffer, buffer.length);

			socket.receive(packet);
			var data = new JString(packet.getData()).trim();
			if (data.length == 0) {
				// 接收超时,结束接收  
				isReceive = false;
			} else {
				console.log('=====收到数据======', data);
			}
		} catch (ex) {
			socket.close();
			isReceive = false;
			console.log('接收数据失败')
		}
	}
	
} catch (ex) {
	console.log('========出错了=======', ex);
	
} finally {
	if (socket != undefined) {
		socket.close();
	}
}			

参考文章:https://my.oschina.net/u/4004226/blog/5125863

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-19 12:24:57  更:2021-08-19 12:26:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 18:28:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码