欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

javarmi實(shí)現(xiàn)代碼 java開發(fā)代碼

誰(shuí)能幫我讀一下這三個(gè)JAVA小程序,關(guān)于RMI技術(shù)的,最好能在后面幫我標(biāo)注解釋。謝謝了

RMI主要可以理解為遠(yuǎn)程調(diào)用。第三個(gè)是真正執(zhí)行計(jì)算的實(shí)體,第二個(gè)是第三個(gè)對(duì)外公開的總代理商,第一個(gè)就是零售商。

成都創(chuàng)新互聯(lián)主營(yíng)江源網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶APP開發(fā)公司,江源h5微信小程序開發(fā)搭建,江源網(wǎng)站營(yíng)銷推廣歡迎江源等地區(qū)企業(yè)咨詢

java rmi怎樣實(shí)現(xiàn)服務(wù)器間的通信

首先要選用技術(shù),這很明顯做個(gè)socket就行,簡(jiǎn)單通訊,還可以擴(kuò)展為非局域網(wǎng)的主機(jī)。

1,編寫socket服務(wù)器端 放在主服務(wù)器上,利用開機(jī)啟動(dòng)的方式啟動(dòng)server

并保持監(jiān)聽某端口

2,編寫socket客戶端放在 你需要的從屬服務(wù)器上,同樣利用開機(jī)啟動(dòng)的方式

運(yùn)行client,然后程序中利用 經(jīng)過(guò)包裝client.getOutputStream()的流,向服務(wù)器發(fā)送消息,就是那個(gè)ip (當(dāng)字符串發(fā),轉(zhuǎn)換為byte[])

(細(xì)節(jié)我就不介紹了…… )

3,匯總的實(shí)質(zhì)就是 server 利用

client.getInputStream()的包裝流(假如叫in)

存放數(shù)據(jù)的數(shù)組,假如叫 bytep[] buf;

獲得數(shù)據(jù) in.read(buf,0,buf.length);

然后:

File file = new File("D://log.txt");//假如是你要的log文件

FileInputStream fis =new FileInputStream(file);

fis.write(buf);

這樣就搞定了

細(xì)節(jié)注意點(diǎn):由于log文件需要保留舊數(shù)據(jù),所以寫文件的時(shí)候要注意選用Acess流進(jìn)行插入。另外,當(dāng)從屬服務(wù)器關(guān)閉的時(shí)候,也要發(fā)個(gè)信息過(guò)來(lái),把對(duì)應(yīng)的ip刪除掉哦!

給我分唄

Java Rmi如何實(shí)現(xiàn)兩個(gè)客戶端之間的通信 求說(shuō)的具體點(diǎn)

RMI的開發(fā)步驟

先創(chuàng)建遠(yuǎn)程接口及聲明遠(yuǎn)程方法,注意這是實(shí)現(xiàn)雙方通訊的接口,需要繼承Remote

開發(fā)一個(gè)類來(lái)實(shí)現(xiàn)遠(yuǎn)程接口及遠(yuǎn)程方法,值得注意的是實(shí)現(xiàn)類需要繼承UnicastRemoteObject

通過(guò)javac命令編譯文件,通過(guò)java -server 命令注冊(cè)服務(wù),啟動(dòng)遠(yuǎn)程對(duì)象

最后客戶端查找遠(yuǎn)程對(duì)象,并調(diào)用遠(yuǎn)程方法

首先為服務(wù)建立一個(gè)Model層,注意因?yàn)榇藢?duì)象需要現(xiàn)實(shí)進(jìn)行遠(yuǎn)程傳輸,所以必須繼承Serializable

代碼?

package?rmi.model;

import?java.io.Serializable;

//注意對(duì)象必須繼承Serializable

publicclass?PersonEntity?implements?Serializable?{

privateint?id;

private?String?name;

privateint?age;

publicvoid?setId(int?id)?{

this.id?=?id;

}

publicint?getId()?{

return?id;

}

publicvoid?setName(String?name)?{

this.name?=?name;

}

public?String?getName()?{

return?name;

}

publicvoid?setAge(int?age)?{

this.age?=?age;

}

publicint?getAge()?{

return?age;

}

}

創(chuàng)建遠(yuǎn)程接口PersonService,注意遠(yuǎn)程接口需要繼承Remote

代碼

package?rmi.service;

import?java.rmi.Remote;

import?java.rmi.RemoteException;

import?java.util.List;

import?rmi.model.*;

//此為遠(yuǎn)程對(duì)象調(diào)用的接口,必須繼承Remote類

publicinterface?PersonService?extends?Remote?{

public?ListPersonEntity?GetList()?throws?RemoteException;

}

建立PersonServiceImpl實(shí)現(xiàn)遠(yuǎn)程接口,注意此為遠(yuǎn)程對(duì)象實(shí)現(xiàn)類,需要繼承UnicastRemoteObject

代碼

package?rmi.serviceImpl;

import?java.rmi.RemoteException;

import?java.rmi.server.UnicastRemoteObject;

import?java.util.LinkedList;

import?java.util.List;

import?rmi.model.PersonEntity;

import?rmi.service.*;

//此為遠(yuǎn)程對(duì)象的實(shí)現(xiàn)類,須繼承UnicastRemoteObject

publicclass?PersonServiceImpl?extends?UnicastRemoteObject?implements?PersonService?{

public?PersonServiceImpl()?throws?RemoteException?{

super();

//?TODO?Auto-generated?constructor?stub

}

@Override

public?ListPersonEntity?GetList()?throws?RemoteException?{

//?TODO?Auto-generated?method?stub

System.out.println("Get?Person?Start!");

ListPersonEntity?personList=new?LinkedListPersonEntity();

PersonEntity?person1=new?PersonEntity();

person1.setAge(25);

person1.setId(0);

person1.setName("Leslie");

personList.add(person1);

PersonEntity?person2=new?PersonEntity();

person2.setAge(25);

person2.setId(1);

person2.setName("Rose");

personList.add(person2);

return?personList;

}????

}

建立服務(wù)器端,在服務(wù)器端注冊(cè)RMI通訊端口與通訊路徑,然后通訊javac命令編譯文件,通過(guò)java -server 命令注冊(cè)服務(wù)。以下面代碼為例,如果閣下將項(xiàng)目建立于D:\\RMI\RemotingService文件夾上時(shí),則先輸入D:\\RMI\RemotingService\srcjavac rmi/remotingservice/Program.java獲取Program.class(如何閣下使用的MyEclipse等開發(fā)工具,可跳過(guò)此步,直接在*/bin文件夾中直接調(diào)用已經(jīng)生成的Program.class),然后輸入D:\\RMI\RemotingService\srcjava rmi/remotingservice/Program啟動(dòng)服務(wù)。

代碼

package?rmi.remotingservice;

import?java.rmi.Naming;

import?java.rmi.registry.LocateRegistry;

import?rmi.service.*;

import?rmi.serviceImpl.*;

publicclass?Program{

publicstaticvoid?main(String[]?args)?{

try?{

PersonService?personService=new?PersonServiceImpl();

//注冊(cè)通訊端口

LocateRegistry.createRegistry(6600);

//注冊(cè)通訊路徑

Naming.rebind("rmi://127.0.0.1:6600/PersonService",?personService);

System.out.println("Service?Start!");

}?catch?(Exception?e)?{

//?TODO?Auto-generated?catch?block

e.printStackTrace();

}

}

}

最后建立客戶端進(jìn)行測(cè)試,注意客戶調(diào)用的RMI路徑必須服務(wù)器配置一致

代碼?

package?rmi.remotingclient;

import?java.rmi.Naming;

import?java.util.List;

import?rmi.model.PersonEntity;

import?rmi.service.*;

publicclass?Program?{

publicstaticvoid?main(String[]?args){

try{

//調(diào)用遠(yuǎn)程對(duì)象,注意RMI路徑與接口必須與服務(wù)器配置一致

PersonService?personService=(PersonService)Naming.lookup("rmi://127.0.0.1:6600/PersonService");

ListPersonEntity?personList=personService.GetList();

for(PersonEntity?person:personList){

System.out.println("ID:"+person.getId()+"?Age:"+person.getAge()+"?Name:"+person.getName());

}

}catch(Exception?ex){

ex.printStackTrace();

}

}

}

常見錯(cuò)誤

在命令提示符調(diào)用java命令時(shí),顯示并無(wú)此命令。這是因?yàn)槲丛凇碍h(huán)境變量”中綁定JAVA的JDK命令造成的,你首先單擊“計(jì)算機(jī)右鍵”-“屬性”-“高級(jí)”-“環(huán)境變量”。在系統(tǒng)變量Path設(shè)置中加載為JDK的路徑? .;D:\Program Files\Genuitec\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013\bin。然后在ClassPath加載服務(wù)器端的Program.class地址 .;D:\\RMI\RemotingService\bin

在調(diào)用javac命令時(shí)出現(xiàn)“javac 找不到文件 ..... ”此錯(cuò)誤,可能是因?yàn)殚w下輸入的文件路徑出現(xiàn)錯(cuò)誤造成,注意不要把D:\\RMI\RemotingService\srcjavac rmi/remotingservice/Program.java寫錯(cuò)為D:\\RMI\RemotingService\srcjavac rmi.remotingservice.Program.java

在調(diào)用D:\\RMI\RemotingService\binjava rmi/remotingservice/Program命令時(shí)出現(xiàn)“Exception in thread 'main' java.lang.NoClassEdfoundError”錯(cuò)誤,第一這可能是閣下把Program錯(cuò)寫為Program.class,注意java命令不需要加后綴名。第二可能是閣下把“java rmi/remotingservice/Program”錯(cuò)寫為“java rmi\remotingservice\Program"。

當(dāng)前題目:javarmi實(shí)現(xiàn)代碼 java開發(fā)代碼
本文路徑:http://chinadenli.net/article4/doddpie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、網(wǎng)站策劃標(biāo)簽優(yōu)化、云服務(wù)器微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開發(fā)