步骤如下

1.直接在SQL命令中写入JAVA代码(用SYS帐号执行,不然权限等太麻烦)

create or replace and resolve java source named udp
as
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class udp {
/*
public static void main(String[] args){
udp.send("192.168.0.110","514","java 1.5 send successfully!");
}
*/
public static String send(String ip,String port,String msg){
try{
int int_port=Integer.parseInt(port); //字符转整形
DatagramSocket ds = new DatagramSocket();
DatagramPacket dp = new DatagramPacket(msg.getBytes(), msg.length(), InetAddress.getByName(ip), int_port);
ds.send(dp);
ds.close(); //关闭连接
return "Successfully";
}catch(Exception e){
return "Failed";
}
}
}

-----------------------------------------------------------------------------------

提示:

或者先用JAVAC编译完JAVA代码,再用 loadjava 命令上传

C:\>javac udp.java
/*dbadmin 为数据库管理员权限(普通权限也可以)*/
C:\>loadjava -user dbadmin/password@sid -o -v -f -r c:\udp.class

//此步骤如同使用  create or replace and resolve java source named udp 。。。一样。

------------------------------------------------------------------------------------

2.编写调用JAVA的包或方法

	--包头
create or replace package udp is
function send(
p_ip in varchar2,--目标IP地址
p_port in varchar2,--目标端口号
p_msg in varchar2 --发送消息内容
) return varchar2; --成功返回 Successfully,否则返回其他
end udp;
/
--包体
create or replace package body udp is
function send(
p_ip in varchar2,--目标IP地址
p_port in varchar2,--目标端口号
p_msg in varchar2 --发送消息内容
) return varchar2 is
language java name 'udp.send(java.lang.String,java.lang.String,java.lang.String) return java.lang.String';
end udp;

------------------------------------------------------------------

提示:

使用 PLSQL 方法也可以,如下

  function send(
p_ip in varchar2,--目标IP地址
p_port in varchar2,--目标端口号
p_msg in varchar2 --发送消息内容
) return varchar2 is
language java name 'udp.send(java.lang.String,java.lang.String,java.lang.String) return java.lang.String';

------------------------------------------------------------------

3.把 udp 包授权给普通用户,普通用户就可以使用了。

在SQL输入命令(使用SYS帐号),如下

GRANT EXECUTE ON udp TO USERNAME;

------------------------------------------------------------------

提示

如果出现网络等错误,可用如下代码解决(用SYS 帐输入,如下代码)

begin
dbms_network_acl_admin.create_acl (
acl => 'UTL_INADDR.xml',
description => 'utl_inaddr',
principal => 'USERNAME', --此为将来要进行操作的用户
is_grant => TRUE,
privilege => 'resolve'
);
commit;
end;
/
begin
dbms_network_acl_admin.add_privilege (
acl => 'UTL_INADDR.xml',
principal => 'USERNAME',
is_grant => true,
privilege => 'connect'
);
commit;
end;
/
begin
dbms_network_acl_admin.assign_acl(
acl => 'UTL_INADDR.xml',
host => '*'
);
commit;
end;
/
exec sys.dbms_java.grant_permission( 'USERNAME', 'SYS:java.net.SocketPermission', '192.168.1.110:514', 'connect,resolve' );

  

------------------------------------------------------------------

4.使用

declare
l_res varchar2(100);
begin l_res:=udp.send('192.168.0.10','1234','我是将要发送的内容');
if upper(l_res)='SUCCESSFULLY' then
htp.print('发送成功!');
else
htp.print('发送失败!');
end if; end;

 ---------------------------------------

  提示,如果这些代码日后不使用了,可用如下方法删除

  1.删除包

  drop package udp;

  2.删除java

  drop java source udp;

  

  如果用 loadjava 上传的,可用

  drop java class udp;

  或在命令提示符下输入如下代码

dropjava -u dbadmin/password@sid001 udp.class

--------------------------------------

  

PL/SQL 调用JAVA使用UDP发送数据的更多相关文章

  1. Java使用UDP发送数据到InfluxDB

    最近在做压测引擎相关的开发,需要将聚合数据发送到InfluxDB保存以便实时分析和控制QPS. 下面介绍对InfluxDB的使用. 什么是InfluxDB InfluxDB是一款用Go语言编写的开源分 ...

  2. oracle PL/SQL调用Java生成Excel

    现在有个需求,  要求编写oracle存储过程生成Excel文件到指定目录,  但是oracle自己的API貌似不太给力,  所以只能通过另一种更强大的语言来实现了  ——Java.有一个Java框架 ...

  3. PL/SQL 调用 JAVA代码

    1.直接在 SQL Developer中写入代码 create or replace and compile java source named "HelloWorld" as p ...

  4. 通过 UDP 发送数据的简单范例

    package j2se.core.net.udp; import java.io.IOException;import java.net.DatagramPacket;import java.net ...

  5. C#调用API向外部程序发送数据

    C#调用API向外部程序发送数据 最近有可能要做一个项目.在项目中有这么一个功能,在A程序中调用B程序,同时在A程序中进行登陆后,要将A程序的登录名和密码自动填充到B程序的登陆对话框中,这样B程序就不 ...

  6. java实现udp发送端和接收端

    发送端: package demo02; import java.io.IOException; import java.net.DatagramPacket; import java.net.Dat ...

  7. PL/SQL导出到execl中,数据前面的0发生丢失的解决办法

    ERR出现的场景再现: 使用 PL/SQL导出按钮,选择‘CSV文件’,保存为1.csv,后用execl打开,复制到VuGen中作为login脚本的参数化文件username. ERR及发现过程: 在 ...

  8. PL/SQL 导入excel表格到oracle数据表

    通过使用PL/SQL 批量查询取数时,将excel中的每一列数据复制黏贴进新建的中间表,黏贴时会有贴歪的情况,也就是某些列会从第二第三行开始插入整列,导致数据乱掉,然后好像又不支持批量删除整列数据,所 ...

  9. PL/SQL简单使用——导入、导出数据表

    1.使用PL/SQL导出.导入表 在使用PL/SQL操作oracle数据库时,经常使用的一个操作就是将自己写的数据表导出,或者想把他人的数据表导入到自己的数据库中.虽然是很简单的操作,但自己之前一直出 ...

随机推荐

  1. 剑指offer第二版-总结:二叉树的遍历

    思想:前序(根左右),中序(左根右),后序(左右根) 前序非递归遍历: 首先判断根是否为空,将根节点入栈 1.若栈为空,则退出循环 2.将栈顶元素弹出,访问弹出的节点 3.若弹出的节点的右孩子不为空则 ...

  2. Specifying the Code to Run on a Thread

    This lesson shows you how to implement a Runnable class, which runs the code in its Runnable.run() m ...

  3. Java调用方法参数究竟是传值还是传址?

    之前阅读<Head First Java>的时候,记得里面有提到过,Java在调用方法,传递参数的时候,采用的是pass-by-copy的方法,传递一份内容的拷贝,即传值.举一个最简单的例 ...

  4. 在 .h 和 cpp 中查找 :grep consume ~/test/2016/AMQP-CPP/**/*.cpp ~/test/2016/AMQP-CPP/**/*.h -r

    :grep consume ~/test/2016/AMQP-CPP/**/*.cpp ~/test/2016/AMQP-CPP/**/*.h -r -w "whole" 匹配整个 ...

  5. 个人永久性免费-Excel催化剂功能第68波-父子结构表转换之父子关系BOM表拆分篇

    Excel中制造业行业中,有一个非常刚需的需求是对BOM(成品物料清单)的拆解,一般系统导出的BOM表,是经过压缩处理的,由父子表结构的方式存储数据.对某些有能力使用SAP等专业ERP软件的工厂来说, ...

  6. app同包同签名不能安装问题

    今天博主与团队之间出现一个很郁闷的问题: 那就是我们开发的一个app,在升级推送版本的时候突然出现,相同的包名.相同的签名.在安装的时候出现,安装签名不一致(安装失败)的提示. 让我们很是困扰.后来发 ...

  7. [leetcode] 290. Word Pattern (easy)

    原题 思路: 建立两个哈希表,分别保存: 1 模式 :单词 2 单词 :是否出现过 水题 /** * @param {string} pattern * @param {string} str * @ ...

  8. Node + js实现大文件分片上传基本原理及实践(一)

    _ 阅读目录 一:什么是分片上传? 二:理解Blob对象中的slice方法对文件进行分割及其他知识点 三. 使用 spark-md5 生成 md5文件 四. 使用koa+js实现大文件分片上传实践 回 ...

  9. 深入理解Java中的锁(二)

    locks包结构层次 Lock 接口 方法签名 描述 void lock(); 获取锁(不死不休) boolean tryLock(); 获取锁(浅尝辄止) boolean tryLock(long ...

  10. 机器学习经典分类算法 —— k-近邻算法(附python实现代码及数据集)

    目录 工作原理 python实现 算法实战 约会对象好感度预测 故事背景 准备数据:从文本文件中解析数据 分析数据:使用Matplotlib创建散点图 准备数据:归一化数值 测试算法:作为完整程序验证 ...