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){}






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