setupproxy.java
来自「《移动Agent技术》一书的所有章节源代码。」· Java 代码 · 共 155 行
JAVA
155 行
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 setupProxy extends Aglet {
//private boolean atHome;
private AgletProxy masterProxy;
String name = "Unknown";
AgletID sid=null;
AgletID self_id=null;
String sname;
AgletProxy serverProxy = null;
URL homeURL = null;///表示最初派遣主机的url
AgletID aid = null;
public void onCreation (Object init) {
//atHome = true;
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("setupServer") ){ ////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();
// int l=str.length;
// for(int i=0;i<l;i++)
//{
// System.out.println("Proxy receive record from ShezhiClient: "+str[i][2]);
//}
//测试安全性fileRead();
System.out.println("Proxy receive record from ShezhiClient: "+str[0]+str[1]+str[2]+str[3]+str[4]+str[5]+str[6]);
//////////
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) );
for(int i=0;i<3;i++)
{
System.out.println("proxy send "+mm[i]+" to server");
}
serverProxy.sendOnewayMessage(new Message("quit",mm) );
}//end try
catch(Exception e){
e.printStackTrace();
System.out.println("serverProxy message error");
}
return true;
}//end if
//added
//
//
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 + -
显示快捷键?