create or replace and compile java source named "TcpRequest" as
package com.ora.pro;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
public class OracleTcpRequest {
public static String getUserInfo(String ip){
String strLine="";
try {
Socket socket=new Socket(ip,34569);
System.out.println("Request has been sending.....");
PrintWriter ps=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())));
ps.println("172.16.4.110");
ps.flush();
ps.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
return "0";
} catch (IOException e) {
e.printStackTrace();
return "0";
}
return "1";
}
}
在 sqlplus里执行:
create or replace function TcpRequest(ipaddress varchar2) return varchar2
as language java name
'com.ora.pro.OracleTcpRequest.getUserInfo(java.lang.String)return java.lang.String';
set serveroutput on;
select TcpRequest('172.16.4.37') from dual;
package com.oracle.test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class OracleServerTcp {
public static void main(String[] args) {
try {
ServerSocket serverSocket=new ServerSocket(34569);
while(true){
Socket socket=serverSocket.accept();
System.out.println("已经侦听到了请求");
serverSocket.setSoTimeout(100);
BufferedReader bReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String strLine=bReader.readLine();
System.out.println("strLine:==========="+strLine);
PrintWriter ps=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())));
ps.println("172.16.4.110");
ps.flush();
ps.close();
serverSocket.close();
socket.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}