步骤如下

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. 使用Task实现非阻塞式的I/O操作

    在前面的<基于任务的异步编程模式(TAP)>文章中讲述了.net 4.5框架下的异步操作自我实现方式,实际上,在.net 4.5中部分类已实现了异步封装.如在.net 4.5中,Strea ...

  2. MMM 数位dp学习记

    数位dp学习记 by scmmm 开始日期 2019/7/17 前言 状压dp感觉很好理解(本质接近于爆搜但是又有广搜的感觉),综合了dp的高效性(至少比dfs,bfs优),又能解决普通dp难搞定的问 ...

  3. 《ElasticSearch6.x实战教程》之准备工作、基本术语

    第一章-准备工作 工欲善其事必先利其器 ElasticSearch安装 ElasticSearch6.3.2下载地址(Linux.mac OS.Windows通用,下载zip包即可):https:// ...

  4. [记录]python的简单协程框架(回调+时间循环+select)

    # -*- coding: utf-8 -*- # @Time : 2018/12/15 18:55 # @File : coroutine.py #一个简单的 Coroutine 框架 import ...

  5. 个人永久性免费-Excel催化剂功能第24波-批量发送邮件并指点不同附件不同变量

    批量发送邮件功能,对高级OFFICE用户来说,第1时间会想到使用WORD的邮件合并功能.但对于需要发送附件来说,邮件合并功能就无能为力,同样还有的限制是用户电脑上没有安装OUTLOOK,同样也不能发送 ...

  6. C#3.0新增功能10 表达式树 04 执行表达式

    连载目录    [已更新最新开发文章,点击查看详细] 表达式树 是表示一些代码的数据结构. 它不是已编译且可执行的代码. 如果想要执行由表达式树表示的 .NET 代码,则必须将其转换为可执行的 IL ...

  7. sqlserver 2008 无法使用特殊主体‘sa’,错误15405

    今天莫名其妙的遇到一个问题,还原了几个数据库到新的服务器上,突然发现sa用户对某几个数据库没有权限(用户映射): 我手工勾选相应数据库的db_owner权限之后,报错:无法使用特殊主体'sa',错误1 ...

  8. [Github]watch和star的区别

    1. Watch Issues 以及它们的评论 Pull Requests 及评论 对任何提交的评论 如果没有watch,只有在参与了讨论的情况下会接收到提醒 : 被 @ 提及 被分配 Issues ...

  9. jango简介

    Django简介   Django框架简介 MVC框架和MTV框架 MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Mode ...

  10. 给定一个IP地址,转化为二进制32位,再转化为十进制,写出一个方法让其十进制转为IP地址

    十进制是已知的数值 第一种方法: <script type="text/javascript"> var num=2148140545; var str=num.toS ...