Firefox扩展程序和Java程序通信

实现Firefox扩展程序,和Java RMI Client端进行通信。

在Firefox工具栏注册按钮,点击按钮后弹出Popup.html页面,引用Popup.js脚本,通过脚本向Java RMI client发送消息,Java RMI Client接收消息后转发到Java RMI Server。

Popup.js中的发送代码:

btnSend.addEventListener("click", function(event) {const sending = browser.runtime.sendNativeMessage("native.host", url.value);sending.then(function(resp) {txtResult.textContent = resp.message;}, function(err) {txtResult.textContent = err;});
});

注册的native.json配置文件

{"name": "native.host","description": "Example host for native messaging","path": "native.bat","type": "stdio","allowed_extensions": ["hook@native"]}

执行的native.bat代码

@echo off 
rem  echo off -> close stdout 
call java -cp "C:\Users\cc\OneDrive\src\java\RMIClient\bin" net.RMIClient

Java RMI client程序

public class RMIClient  {public static String read() throws IOException {byte[] _len = new byte[4];System.in.read(_len);ByteBuffer bb = ByteBuffer.wrap(_len);bb.order(ByteOrder.LITTLE_ENDIAN);int length = bb.getInt(0);byte[] message = new byte[length];System.in.read(message);return new String(message, "UTF-8");}public static void write(String s) throws IOException {byte[] utf = s.getBytes("UTF-8");ByteBuffer bb = ByteBuffer.allocate(utf.length + 4);bb.order(ByteOrder.LITTLE_ENDIAN);bb.putInt(0, utf.length);bb.put(4, utf);byte[] bs = bb.array();System.out.write(bs);System.out.flush();}public static void main(String[] args) throws IOException, InterruptedException, NotBoundException {Registry registry = LocateRegistry.getRegistry("127.0.0.1", 1099);IReceive receiver = (IReceive) registry.lookup("Receiver");String data =  read();String result = receiver.receive(data);write(" { \"message\":\"ok\" }" );}}

运行效果,浏览器弹出框,点击"Send"发送浏览器当前地址

Java RMI Server收到的消息:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/51046.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis的入门操作--打印日志和增删改查(单表静态)

下面介绍注解和xml实现crud的操作 目录 一、日志打印和参数传递 1.1.使用mybatis打印日志 1.2.参数传递细节 二、crud(注解实现) 2.1.增(insert) 2.2.删(delete) 和 (update) 2.3.查(select) 三、crud(xml实现) 3.1.准备…

中国居民膳食指南书籍知识点汇总

人如果吃不好,就不能好好思考,好好爱,好好休息。——维吉尼亚伍儿夫 文章目录 书籍简介饮食准则推荐膳食图示 准则一:食物多样,合理搭配合理搭配的方法平衡膳食的科学原理均衡饮食的作用食物功效(有科学实验…

02、爬虫数据解析-Re解析

数据解析的目的是不拿到页面的全部内容,只拿到部分我们想要的内容内容。 Re解析就是正则解析,效率高准确性高。学习本节内容前需要学会基础的正则表达式。 一、正则匹配规则 1、常用元字符 . 匹配除换行符以外的字符 \w 匹配字母或数字或下划…

基于Python的房产数据分析系统的设计与实现(源码+lw+部署文档+讲解等)

文章目录: 目录 详细视频演示 设计文档详细参考 技术开发的参考技术栈! 2.1 Python语言 2.2 Django框架 2.3 MySQL 2.4 Hadoop介绍 2.5 Scrapy介绍 4.2 系统结构设计 4.3 数据库设计 界面设计与功能实现 5.1系统登录注册实现 5.2管理员模块…

【请求代理】springboot单机服务基于过滤器Filter实现第三方服务器接口请求代理功能

springboot单机服务基于过滤器Filter实现第三方服务器接口请求代理功能 一、前言二、解决思路三、基于gateway实现四、基于过滤器Filter实现五、问题总结 **注:本文源码获取或者更多资料,关注公众号:技术闲人**一、前言 在项目开发时会遇到w…

基于yolov8的口罩检测模型

项目介绍 本项目基于yolov8对图像进行训练,可以检测戴口罩的人与没有带口罩的人的图片和视频,除此之外,还提供了数据分析界面,支持检测过的信息转化为excel,信息可视化等功能 配置过程 软件开发环境:python3.9 系统…

前端开发:HTML与CSS

文章目录 前言1.1、CS架构和BS架构1.2、网页构成 HTML1.web开发1.1、最简单的web应用程序1.2、HTTP协议1.2.1 、简介1.2.2、 http协议特性1.3.3、http请求协议与响应协议 2.HTML概述3.HTML标准结构4.标签的语法5.基本标签6.超链接标签6.1、超链接基本使用6.2、锚点 7.img标签8.…

Apollo:实时通信架构CyberRT入门, my writer

1. 简介 1.1 从 ROS 系统说起 Apollo 最初用的中间件是 ROS(机器人操作系统),在 v3.0 之前用的都是基于 ROS 框架进行开发。概括来说,ROS 系统主要包含三方面: 第一是通信系统,ROS 是个分布式的松耦合系统,算法模块是以独立的进程形式存在的,也就是我们常说的 Node。R…

单击和一些案例

一、单击 1、单击概念 除了定位鼠标之外,processing鼠标还捕捉鼠标是否被单击。mousePressed在鼠标单击和不单击的情况下有不同的值。mousePressed变量是一种bool变量,也就是说它只有两个可能的值,真和假。当鼠标按下的时候mousePressed的值…

apache2和httpd web服务器

apache2和httpd web服务器 apache2和httpd web服务器是啥apache是软件基金会apache2是一个web服务httpd和apache2是同一个东西,但是不同linux发行版中叫法不一样。就是同一个东西,但是看上去有一些不一样。 apache2和httpd web服务器是啥 apache是软件基…

Scikit-learn内置的数据集

数据集是我们学习和研究机器学习不可或缺的基础,Scikit-learn库内置了丰富的数据集资源,非常适合初学者用来练习和验证机器学习算法的效果。 一、鸢尾花数据集 鸢尾花数据集(Iris Dataset)是机器学习领域中最著名的数据集之一&am…

【每日一篇】使用图神经网络进行交通速度预测的上下文感知知识图谱框架【为了自己方便读论文】

Context-aware knowledge graph framework for traffic speed forecasting using graph neural network 论文链接: https://arxiv.org/abs/2407.17703 翻译: 摘要 人类流动在空间和时间上受到城市环境的密切影响,构成了理解交通系统的重…

MarkTool之UDP

UDP客户端,主要作用是与UDP服务端连接进行数据通讯 1、连接参数有4个,绑定IP和Port,服务端IP和Port 2、接收数据和发送数据的参数设置,有16进制,有字符,有原始数据,都可进行选择 3、定时发送&a…

理解常见开源协议的区别

本文将介绍几种常见的开源许可证,包括GPL、LGPL、MIT、Apache、BSD 和 木兰协议(Mulan PSL),并详细解释它们的区别。 1. GPL (GNU General Public License) GPL 是最著名和最常用的开源许可证之一,由自由软件基金会 …

泰安网站建设有几大特点

泰安网站建设的特点可以分为以下几个方面: 一、突出地域特色。泰安是山东省的一个地级市,具有悠久的历史和深厚的文化底蕴。在网站建设过程中,泰安的特色文化和旅游资源应得到充分的展示。可以通过优美的图片、详细的介绍和生动的文字&#x…

【Python 基础】字典和结构化数据 -1

字典和结构化数据 在本文中,我将介绍字典数据类型,它提供了一种灵活的访问和组织数据的方式。然后,结合字典与关于列表的知识,你将学习如何创建一个数据结构,对井字棋盘建模。 字典数据类型 像列表一样,“字典”是许多值的集合。但不像列表的下标,字典的索引可以使用…

【STM32】SysTick定时器

SysTick定时器 前言一、介绍最大计时时间 固件库函数体现用途 总结 前言 参考一下猫咪博主的文章,作为补充学习⇨【STM32】Systick滴答定时器 当然我主要还是跟着金善愚老师学的,我觉得他真的有种高中班主任的亲切感。那个1812的名号往那里一放&#x…

【vluhub】elasticsearch漏洞

Elasticsearch介绍 是Apache旗下的一个开源的、分布式、RESTful的搜索和分析引擎,适用于java语言项目 默认端口9200 kali中搭建ElasticHD, 即可未授权绕过ES可视化界面 直通车 https://github.com/360EntSecGroup-Skylar/ElasticHD/releases/download/1.4/elas…

Csrf复习(pikachu靶场和防御手段)

CSRF漏洞简介 CSRF又称跨站请求伪造,是指攻击者在用户登录的状态下(浏览器保存了用户的cookie)通过伪造恶意url诱导用户点击,借助用户的cookie网站权限(冒充用户身份来进行非法操作,对于服务器来说是合法的…

视觉SLAM第二讲

SLAM分为定位和建图两个问题。 定位问题 定位问题是通过传感器观测数据直接或间接求解位置和姿态。 通常可以分为两类:基于已知地图的定位和基于未知地图的定位。 基于已知地图的定位 利用预先构建的地图,结合传感器数据进行全局定位。SLAM中的全局…