當前位置:首頁 » 編程語言 » php與java通信

php與java通信

發布時間: 2022-09-23 11:03:26

Ⅰ 基於ICE的phpjava間的通信

PHP與JAVA融合的開發環境

一.系統環境

1.初始安裝

防火牆開放介面:21,22,80,2401,8009,10000,eth0
Redhat linux 9.0
Development Tools

Network Servers
VSFtp
CVS-1.11.2-10
Mysql 3.23.54

2.包安裝

JDK 1.5
下載地址:http://www.netshine.com.cn/linux/j2sdk-1_4_2_04-linux-i586.rpm

Tomcat 5.0.19
下載地址:http://www.netshine.com.cn/linux/jakarta-tomcat-5.0.19.tar.gz

3.腳本安裝

Webmin 1.110
下載地址:http://www.netshine.com.cn/linux/webmin-1.110.tar.gz

ZendOptimizer 2.5.1
下載地址:http://www.netshine.com.cn/linux/ZendOptimizer-2.5.1-Linux_glibc21-i386.tar.gz

4.手工編譯

Apache 2.0.49
下載地址:http://www.netshine.com.cn/linux/httpd-2.0.49.tar.gz

PHP 4.3.5
下載地址:http://www.netshine.com.cn/linux/php-4.3.5.tar.gz
JK 2-2.0.4
下載地址:http://www.netshine.com.cn/linux/jakarta-tomcat-connectors-jk2-src-current.tar.gz

5.客戶機環境

Windows XP Professional
Absolute Telnet 3.0
Zend Encoder
Macromedia Dreamweaver MX 2004
Borland JBuilder 9 Enterprise
WinCVS 1.3
下載地址:http://www.netshine.com.cn/linux/WinCvs13b17.zip

二.系統安裝

啟動Linux安裝光碟,安裝基本系統:FTP、開發工具和MySQL3.23.54。如果你是手工編譯安裝MySQL,要記得以後在編譯PHP等程序時要指明MySQL的具體路徑,否則會因找不到路徑而導致編譯出錯。

三.安裝webmin1.110

用Webmin來配置系統,傻瓜化,可以節省不少力氣,所以一般我都先安裝它。安裝過程很簡單,執行setup.sh腳本後照提示一步一步來就可以了。

# cd webmin*
# ./setup.sh

四.安裝JDK1.5

1.編輯如下三個文件,沒有指明全路徑的放在你自己的home目錄就可以。

/etc/profile
JAVA_HOME=/usr/java/j2sdk1.4.2_04
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
CVSROOT=/usr/local/cvsroot
PATH=.:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export JAVA_HOME CLASSPATH CVSROOT PATH

/etc/ld.so.conf
/usr/java/j2sdk1.4.2_04/jre/lib/i386
/usr/java/j2sdk1.4.2_04/jre/lib/i386/server

HelloWorld.java
class HelloWorld
{
public static void main(String[] args)
{
//本文件測試Java環境是否安裝成功。
System.out.println("Hello World!");
}
}

2.執行以下命令:

# rpm -ivh j2sdk*.rpm //安裝JDK包。
# source /etc/profile //重載profile環境。
# ldconfig //創建動態鏈接庫緩存文件。
# javac -d . HelloWorld.java //編譯測試文件。
# java HelloWorld //運行程序測試安裝是否成功。

五.安裝Apache

# tar xvzf httpd* //解壓源碼包。
# cd httpd* //進入安裝目錄。
# ./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared=most --enable-rewrite
# make;make install //編譯並安裝。

說明:

--enable-so選項:讓Apache可以支持DSO模式,注意,我們在這里採用的是Apache2.0的語法。如果你的Apache是1.3版本,應改為--enable-mole=so。

--enable-mods-shared=most選項:告訴編譯器將所有標准模塊都編譯為DSO模塊。你要是用的是Apache1.3,改為--enable-shared=max就可以。

--enable-rewrite選項:支持地址重寫功能,使用1.3版本的朋友請將它改為--enable-mole=rewrite。

六.編譯安裝PHP

1.執行命令

#tar xvzf php* //解壓源碼包
#cd php* //進入PHP安裝命令
#./configure --prefix=/usr/local/php --with-mysql --with-apxs2=/usr/local
/apache/bin/apxs --with-java=/usr/java/j2sdk1.4.2_04
#make;make install //編譯並安裝
#cp php.ini-dist /usr/local/php/lib/php.ini //復制php配置文件
#cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429 //extensions目錄
#ln -s java.so libphp_java.so //建立連接,忘記了會出錯哦
#cd Zend* //進入ZendOptimizer目錄
#./install //安裝PHP加速器

說明:

--with-apxs2=/usr/local/apache/bin/apxs是Apache2的語法,1.3版本的用戶請使用--with-apxs=/usr/local/apache/bin/apxs。

2.編輯下面三個文件

/usr/local/apache/conf/httpd.conf
LoadMole php4_mole moles/libphp4.so

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

AddDefaultCharset gb2312

/usr/local/apache/htdocs/test.php
<?php
//本程序測試PHP的JAVA環境是否可用,
代碼是從http://www.php.net/manual/en/ref.java.php摘錄下來的。

// get instance of Java class java.lang.System in PHP
$system = new Java('java.lang.System');

// demonstrate property access
echo 'Java version=' . $system->getProperty('java.version') . '<br />';
echo 'Java vendor=' . $system->getProperty('java.vendor') . '<br />';
echo 'OS=' . $system->getProperty('os.name') . ' ' .
$system->getProperty('os.version') . ' on ' .
$system->getProperty('os.arch') . ' <br />';

// java.util.Date example
$formatter = new Java('java.text.SimpleDateFormat',
"EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");

echo $formatter->format(new Java('java.util.Date'));
?>

/usr/local/php/lib/php.ini
register_globals=On
[Java]
java.class.path=/usr/local/php/lib/php/php_java.jar:/home/jim/myclass
java.home=/usr/java/j2sdk1.4.2_04
java.library=/usr/java/j2sdk1.4.2_04/jre/lib/i386/libjava.so
java.library.path=/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429
extension_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429
extension=libphp_java.so

注意:

(1).如果你剛剛從以前老版本的PHP轉換到新版本,可能會發現你的PHP程序很多都不能用了。別緊張!把register_globals打開就一切正常啦!這是因為老版本的PHP,它的register_globals默認是開著的,而新版本,卻把它關了的緣故。

(2)./home/jim/myclass是我存放JAVA組件的路徑,你可以根據實際情況修改,但是為了安全起見,可不要放在web目錄下哦。

Ⅱ php通信於java 的socket通信,區別是什麼

原理上沒有區別,就是在Tcp上一層。自己封裝通信信息,實現上,當然就有語法不同了,還有php的socket有一個額外的包

Ⅲ PHP與JAVA交互,該怎麼搞

這是一門課程了。javaweb,,或者叫jsp。jsp就是由html和java腳本,等語言構成的。java程序嵌套在html里。相當於php。以網頁的形式將java展現。這也就是所謂的動態。以為java程序獲取的時間會變動。或者資料庫變動從而引起網頁的變動。具體實現,你可以在網上查找jsp教程。以下是一個jsp頁面的例子:注釋(1):上面一句是jsp命令語句,標准形式表示,利用java腳本語言。引入java.util包里的所有文件。編碼為utf-8注釋2:java腳本之後是標準的html格式。可嵌入java代碼">MyJSP'index.jsp'startingpageThisismyJSPpage.可嵌入java腳本

Ⅳ Socket編程 php 與 java 通信 問題

看不懂php

但是我覺得你這個問題可能是因為php發生的EOF不符合java標准。或者根本沒有發送EOF標識。

超時應該發生在 ss = in.readLine();這一行代碼中的in.read()。

下面是j2se文檔資料
int java.io.InputStream.read()
Reads the next byte of data from the input stream. The value byte is returned as an int in the range 0 to 255. If no byte is available because the end of the stream has been reached, the value -1 is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.

A subclass must provide an implementation of this method.

Returns:
the next byte of data, or -1 if the end of the stream is reached.
Throws:
IOException if an I/O error occurs.

這句話非常重要
Returns:
the next byte of data, or -1 if the end of the stream is reached.

當沒有發送end of the stream 標識的話,那麼程序屬於等待狀態。 也就是java端一直處於讀的狀態。
解決這個問題的話。 要麼終端手動發送eof.要麼終端發送每一次交互的位元組長。伺服器端根據這個位元組長來讀取相應長度的位元組。

Ⅳ 請教一下java和php協同開發的方法

引用
因為在做垂直搜索工作中,使用的是java編寫的一個搜索類庫。做垂直搜索,很多實用要使用到配置。當搜索的信息量大時,網站的更新。搜索程序的配置維護是一個不可忽視的問題。所以用了php做網頁,提供配置界面,這樣就可以不用直接修改配置文件或是配置資料庫表。當把配置信息配置好了,我們需要檢測配置是否正確,因為使用的是java程序,所以檢測配置的正確與否使用的也是java程序來檢測。這里就存在一個問題,就是需要把php頁面上的信息傳入到java程序中去檢測。這個時候就需要php和java通信了。下面我就來介紹下怎麼使php跟java通信(當然,你也可以使用類似webservice等技術)也就是php中調用java程序。 php要調用java程序:需要以下准備,php程序,java程序,還有就是shell程序或是bat程序。下面分別介紹下在linux伺服器下php調用java程序和在windows伺服器下調用java程序。前提是php,apache,jdk的環境都已經配置好。
一 在linux下php調用java程序是通過shell文件。分別是以下三個文件: test_shell.php test_shell.java test_shell.sh 他們的源代碼如下:

1.test_shell.java程序代碼

public class test_shell {

public static void main(String[] args) {

System.out.println("你輸入的參數是:"+args[0]+"t"+args[1]);

}

}

2.test_shell.php程序代碼

<?php

/*

* 該函數是用來執行shell命令的,其實還可以使用:exec(),system(),
* popen()和pclose(),passthru() 函數。最長用的是前面兩個和例中使
* 用的shell_exec()。

*/

$args1="我喜歡你";

$args2="我很愛你";

// 注意空格

$r=shell_exec("./test_shell.sh $args1 $args2");

echo $r;

?>

3.test_shell.sh程序代碼是

#!/bin/sh

JAVA_HOME=/usr/local/jdk

CLASSPATH=.:/usr/local/jdk/jre/lib/rt.jar:/usr/local/apache/htdocs/test_shell/test_shell.class

PATH=$PATH:$JAVA_HOME/bin

export JAVA_HOME CLASSPATH PATH

cd /usr/local/apache/htdocs/test_shell

java test_shell

#shell代碼結束

以下是三個程序的存放路徑和運行次序。
1.三個文件都必須在同一目錄下,比如在/usr/local/apache/htdocs/test_shell/下,不然php很難調到java程序。

2.把test_shell.java程序編譯成test_shell.class,然後把test_shell.class文件存放到CLASSPATH中。如果系統配置了那些環境變數,這里在配置一次是沒有壞處的,也不會影響配置好的系統環境變數。這里設置的好處是當沒有配置jdk環境配置,只有jre時,則需把jre放到/usr/local/jdk下就以。

二、下面先介紹在windows伺服器下,php調用java程序是通過bat文件來的。分別是以下三個文件: test_bat.php test_bat.java test_bat.sh 他們的源代碼如下:

1.java程序

public class test_bat {

public static void main(String[] args) {

System.out.println("你輸入的參數是:"+args[0]+"t"+args[1]);

}

}

2.test_bat.php程序代碼

<?php

/*

* 該函數是用來執行shell命令的,其實還可以使用:exec(),system(),
* popen()和pclose(),passthru() 函數。最長用的是前面兩個和例中使
* 用的shell_exec()。

*/

$args1="我喜歡你";

$args2="我很愛你";

// 注意空格

$r=shell_exec("./test_shell.sh $args1 $args2");

echo $r;

?>

3.test_bat.sh程序代碼是

@echo off
set path=%path%;%cd%jrebin
set CLASSPATH=.;%cd%jrelibrt.jar;%cd%test_bat.class
java test_bat %1 %2

#bat代碼結束

1.三個文件都必須放在同一目錄下,比如在/usr/local/apache/htdocs/test_bat/下,不然php很難調到java程序。

2.把test_bat.java程序編譯成test_bat.class,然後把test_bat.class文件存放到CLASSPATH中。如果系統配置了那些環境變數,這里在配置是沒有壞處的,也不會影響配置好的系統環境變數。這里設置的好處是當沒有配置jdk環境配置,只有jre時,則需把jre放到跟跟test_bat.java同一目錄下就行了。

三、上面兩個例子中,test_shell.sh用的絕對路徑,test_bat.bat是用的相對路徑。不管是絕對還是相對,只要路徑對了就行了。

Ⅵ php程序與java程序之間做數據交互,怎麼做

  1. 用php的curl模擬瀏覽器請求是訪問java伺服器程序

  2. 2.用java的一個http類庫同樣發送http請求來訪問PHP伺服器

    $context=stream_context_create(array('http'=>array('method'=>"GET",'timeout'=>30,)));

    $string=file_get_contents('http://www..com/s?wd=php%20file_put_contents',false,$context);//換成java地址

    echo'這可不是網路,只是我輸出了網路的返回';

    echo$string;

Ⅶ php CA加密和JAVA通信

PHP的RSA簽名和驗簽方法

  1. 簽名方法

  2. openssl_sign($msg, $sign, $ key, OPENSSL_ALGO_SHA1);

  3. $msg:要簽名的字元串。

  4. $sign:做好簽名字元串。

不可以寫成 $sign = openssl_sign($msg, $sign, $ key, OPENSSL_ALGO_SHA1);

$ key:密鑰,密鑰格式,必須為rsa_private_key.pem的格式。

OPENSSL_ALGO_SHA1:密鑰演算法,如果與Java等交互,必須相互配對。

2. 驗簽方法

$result= openssl_verify($msg, $sign, $key);

$msg:簽名的原字元串。

$sign:簽名字元串。

$ key:密鑰,密鑰格式,必須為rsa_private_key.pem的格式。

$result:驗簽結果;為1時,驗簽正確;其餘失敗。

Ⅷ php如何與java交互

(Stringpath,Map<String,String>map,Stringencode){
try{
StringdataStr=null;
if(map!=null&&!map.isEmpty()){
StringBuffersb=newStringBuffer();
for(Map.Entry<String,String>entry:map.entrySet())
sb.append("&").append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(),encode));
dataStr=sb.toString().substring(1);
}
System.out.println(dataStr);

URLurl=newURL(path);
=(HttpURLConnection)url.openConnection();
urlConnection.setConnectTimeout(3000);
urlConnection.setRequestMethod("POST");
urlConnection.setDoOutput(true);

if(null!=dataStr){
byte[]data=dataStr.getBytes();
urlConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
urlConnection.setRequestProperty("Content-Length",String.valueOf(data.length));
OutputStreamos=urlConnection.getOutputStream();
os.write(data);
os.close();
}

intreCode=urlConnection.getResponseCode();
if(reCode==200){
Stringre=changInputStreamToString(
urlConnection.getInputStream(),encode).trim();
System.out.println(re);
if(re.equals("0")){
return"用戶名不存在";
}elseif(re.equals("1")){
return"登陸成功";
}elseif(re.equals("-1")){
return"未知錯誤";
}else{
return"密碼錯誤";
}
}
}catch(IOExceptione){
e.printStackTrace();
}
returnnull;
}

Ⅸ php程序與java程序之間做數據交互,怎麼做

可以用php的curl模擬瀏覽器請求是訪問java伺服器程序,或者用java的一個http類庫同樣發送http請求來訪問PHP伺服器

Ⅹ PHP與JAVA交互,該怎麼搞

前後台交互常用的就是HTTP方式,GET和POST。
JAVA後台跑在java容器裡面,接受前台的請求就可以了。

建議你 用一下Chrome的插件POST MAN 你就懂了。
這個可以讓你對HTTP請求有一個比較深入的理解。

不光是java後台,.net後台,php後台都一樣。
使用的都是HTTP協議,數據傳輸的格式都是一樣的。

熱點內容
我的世界畸變生存伺服器 發布:2025-01-10 12:02:51 瀏覽:156
長安unit卓越版有哪些配置 發布:2025-01-10 11:25:25 瀏覽:99
python安裝後怎麼打開 發布:2025-01-10 11:08:35 瀏覽:872
phpjava架構 發布:2025-01-10 10:56:06 瀏覽:385
python二維排序 發布:2025-01-10 10:56:00 瀏覽:608
南水北調怎麼配置 發布:2025-01-10 10:55:27 瀏覽:121
廣數980系統參數密碼是多少 發布:2025-01-10 10:55:25 瀏覽:577
androidhtml字體 發布:2025-01-10 10:55:01 瀏覽:787
資料庫連接工廠模式 發布:2025-01-10 10:51:00 瀏覽:488
mac文件夾路徑設置 發布:2025-01-10 10:48:12 瀏覽:803