applet的通信

一、同頁Applet之間的通信


嵌入同一頁中的Applet之間可以通過java.applet包中提供的方法直接進行通信。
 首先,利用Applet類中的方法getAppletContext()得到當前運行頁的上下文環境AppletContext對象:
public AppletContext  getAppletContext();

 通過AppletContext對象,就可以得到當前Applet運行環境的信息。 接口AppletContext中定義了方法getApplets()可以得到當前頁中的其他Applet對象。
public abstract Applet getApplets(String name);
public abstract Enumeration getApplets();

(Enumeration中提供了方法hasMoreElements()和nextElement()來獲取其中的元素。)

 得到同頁中的其他Applet對象後,就可以調用這些Applet的public方法,從而達到同頁Applet之間通信的目的。


例子:

三個Applets: (AmongApplets.java)
 GetApplets:獲取同頁中其它Applets的信息。
 Sender:獲取同頁中的Applet “Receiver”,並通過其方法向它發送消息。

 Receiver:接收同頁中Applet “Sender”的消息。


<HTML>
    <HEAD>
        <TITLE>Communication among Appelt in same page.</TITLE>
    </HEAD>
    <applet code=Sender.class width=450 height=200 name="I'm Sender">
        <param name="receiverName" value="I'm Receiver">
    </applet>
    <p>
    <applet code=Receiver.class width=450 height=35>
        <param name="name" value="I'm Receiver">
    </applet>
    <p>
    <applet code=GetApplets.class width=400 height=150>
    </applet>
</HTML>

二、Applet和瀏覽器之間的通信

Applet中提供了很多函數來與顯示它的瀏覽器之間進行通信:
 public URL getCodeBase()
 public URL getDocumentBase()
 public String getParameter(String name)
 public void showStatus(String msg)
 public AppletContext getAppletContext()
    Applet可以用這四個方法從瀏覽器中獲取信息或者向瀏覽器發送信息。
 public String[][] getParameterInfo()
 public String getAppletInfo()
    瀏覽器可以使用Applet的這兩個方法來獲取Applet的相關信息。




public AppletContext getAppletContext()

    同一頁面不同Applet之間的通信也是要通過這個方法來獲得起運行環境的(AppletContext),再利用AppletContext提供的方法getApplet()來獲取其它的Applet從而達到相互通信的目的。

    AppletContext中還提供了showDocument()方法來向瀏覽器發送請求,以顯示一個URL頁面:

void showDocument( URL url)
void showDocument( URL url, String target )


void showDocument( URL url)
      指定的HTML頁面將在Applet所在地瀏覽器窗口中顯示。

void showDocument( URL url, String target )
      在本方法中,可以指明顯示HTML頁面的窗口,target就是用來指明在瀏覽器窗口的,不同的取值指明瞭不同的窗口:

“_self”:    在Applet所在的窗口中顯示HTML頁面
“_parent”:    在Applet所在的窗口的父窗口中顯示HTML頁面
“_top”:    在最前面的窗口中顯示HTML頁面
“_blank”:    在新的窗口中顯示HTML頁面
name:    在指定名稱的窗口中顯示HTML頁面


三、Applet的網絡通信


      在Applet中可以進行網絡通信,但是由於安全性的限制,Applet只能和提供它的主機進行通信。

 通過類Applet的getCodeBase()方法獲得提供它的主機的URL實例
 利用類URL的getHost()方法得到主機名
 利用類InetAddress的getByName()得到該主機的IP地址
 通過IP地址,就可以進行網絡通信(TCP, UDP)


URL  url = getCodeBase();
String host = url.getHost();
Try{
    InetAddress address = InetAddress.getByName(host);
}catch(Exception e){}
Try{
    DatagramSocket socket = new DatagramSocket();
    DatagramPacket packet = new DatagramPacket(buf, length, address, port);
    socket.send(packet);
}catch(Exception e){}






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章