basicchild.java
来自「《移动Agent技术》一书的所有章节源代码。」· Java 代码 · 共 187 行
JAVA
187 行
import com.ibm.aglet.*;
import com.ibm.aglet.event.*;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.io.IOException;
import java.net.URL;
import java.net.*;
import java.sql.*;
import java.util.*;
import java.io.*;
public class BasicChild extends Aglet {
//private boolean atHome;
public AgletProxy masterProxy;
String name = "Unknown";
AgletID sid=null;
AgletID self_id=null;
String sname;
AgletProxy serverProxy = null;
URL homeURL = null;///表示最初派遣主机的url
AgletID aid = null;
//log log;
public void onCreation (Object init) {
//atHome = true;
//log=new log();
//log.Init("Ecmdb");
masterProxy = (AgletProxy) init;
setText("Alive!");
try {
homeURL = getAgletContext().getHostingURL();
aid = masterProxy.getAgletID();
////debug
System.out.println("hostUrl is:"+homeURL);
System.out.println("agletID is:"+aid);
setText("hostUrl is:"+homeURL);
setText("agletID is:"+aid);
} catch (Exception ex) {
System.out.println(ex);
}
addMobilityListener(new MobilityAdapter () {
public void onArrival(MobilityEvent me) {
self_id=getAgletID();
System.out.println("my self id is:"+self_id);
setText("Arrived safely");
//added
AgletContext cxt=getAgletContext();
try{
Enumeration aglets=cxt.getAgletProxies();
while (aglets.hasMoreElements()) {
AgletProxy tmp=(AgletProxy) aglets.nextElement();
AgletInfo inf=tmp.getAgletInfo();
System.out.println(inf.toString() );
String agName=tmp.getAgletClassName();
if (agName.endsWith("Server") ){ ////get server id
sid=tmp.getAgletID();
sname=tmp.getAgletClassName();
System.out.println("the sname is:"+sname);
}//end if
}//end while
////////////
System.out.println(cxt.toString() );
name = (String) getAgletContext().getProperty("aglets.user.name", "Unknown");
}//end try
catch (Exception ex) {
ex.printStackTrace();
} //end catch
//end
}
});
}//end onCreation
//added
public boolean handleMessage(Message msg) {
if (msg.sameKind("sendWrite")) { /////接受master传来的消息,并送给server
String[][][] str=(String[][][])msg.getArg();
//测试安全性fileRead();
//////////
try{
System.out.println("serverProxy id is:"+sid);
//if (serverProxy == null) {
serverProxy = getAgletContext().getAgletProxy(sid); ///获取代理
// }
String[] mm=new String[3];
mm[0] = (String)self_id.toString();
mm[1] = (String)homeURL.toString();
mm[2] = (String)aid.toString();
serverProxy.sendOnewayMessage(new Message("write",str) );
serverProxy.sendOnewayMessage(new Message("quit",mm) );
Thread.sleep(15000);
for(int i=0;i<3;i++)
{
System.out.println("proxy send "+mm[i]+" to server");
}
}//end try
catch(Exception e){
e.printStackTrace();
System.out.println("serverProxy message error");
}
return true;
}//end if
//added
else if (msg.sameKind("sendbzjWrite")) {
String[][] str=(String[][])msg.getArg();
//////////
try{
System.out.println("serverProxy id is:"+sid);
//if (serverProxy == null) {
serverProxy = getAgletContext().getAgletProxy(sid); ///获取代理
// }
String[] mm=new String[3];
mm[0] = (String)self_id.toString();
mm[1] = (String)homeURL.toString();
mm[2] = (String)aid.toString();
serverProxy.sendOnewayMessage(new Message("bzjwrite",str) );
serverProxy.sendOnewayMessage(new Message("quit",mm) );
Thread.sleep(15000);
for(int i=0;i<3;i++)
{
System.out.println("proxy send "+mm[i]+" to server");
}
}//end try
catch(Exception e){
e.printStackTrace();
System.out.println("serverProxy message error");
}
return true;
}
else if (msg.sameKind("bye")) { /////结束会话
System.out.println("I will dispose");
dispose();
}
//end added
return false;
}//end handlemessage
//end
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?