客户端既然用Applet,那建议你开一个线程,每隔一段时间就访问一下服务器的Servlet上把信息取回来处理,不难的,你看看线程和net包,应该很快就能搞定.

解决方案 »

  1.   

    可我想用SOCKET来完成通信,服务器端用application完成一些简单的处理,不想在服务器端用SERVLET,因为我对servlet也不很了解.
      

  2.   

    大家帮帮忙呀,我写的Applet socket报错:exception:com.ms.security.SecurityException[HOST]:cannot access "IP":8000
    我换了好几个端口都报安全错误,谁有这方面的经验给说说.谢谢了
      

  3.   

    你若是装了天网就关掉它!
    防火墙有时会禁掉很多端口的.
    只用Socket的话,那就由客户端发送一些如"start","end"之类的字符做为控制符,服务端接到这些控制符后就做相应的处理,我一般上都是这么做的,不用Servlet也无所谓.
      

  4.   

    不是说applet只能和提供该applet的源主机建立 socket连接吗,怎么我的在同一台机子上不行呢,关了防火墙也不行,还是报安全错误,听说签名和授权可以解决,具体该怎么做呢,那位大侠给讲讲呀,我的程序改成APPLICATION就运行良好,在applet中就是不行,郁闷.
      

  5.   

    如果applet和源主机建立 socket是可以的,SecurityException的异常应该是host或port的问题,监听客户端的socket()要建立一个匿名的端口,不要指定端口,不然,如果不释放这个端口,那再重起ie后就会出问题!
      

  6.   

    applet缺省设置有很多限制,你需要改JRE下面的security属性文件才可以。很就以前我改过一次,现在具体操作不记得了。。
    要不去网络上面搜索下。
      

  7.   

    我已经把java.security中socketpermission改成全部允许了,但还是不行.
    sandy1314(sandy) 说的端口没释放是什么意思,怎么建立匿名端口,如果是这个原因那该怎么处理一下呢.
      

  8.   

    将程序放上来大家看看:
    服务器端:
    import java.net.*;
    import java.io.*;public class warnserv extends Thread
    {
           int port=4000;
           ServerSocket ssoc=null;
           String val;
           Socket soc=null;
           DataInputStream instream=null;
           DataOutputStream outstream=null;
    public warnserv()
    {
     try
        {
           ssoc=new ServerSocket(port);
           System.out.println("jian li");
        }  catch(IOException e){System.out.println(e.toString());}
    }
    public void star()
    {
     try
        { 

            soc=ssoc.accept();
            System.out.println("ok");
            instream=new DataInputStream(soc.getInputStream());
                    outstream=new DataOutputStream(soc.getOutputStream());
                    ......客户端:
    import java.applet.*;
    import java.awt.*;
    import java.util.*;
    import java.io.*;
    import java.net.*;public class warnclient extends Applet implements Runnable
    {             
            DataInputStream in=null;
            DataOutputStream out=null;        
            String[] strin=null;        
            String sin;
            String warnlevel;   
            Thread mythread;    
            String equipmentid;
            URL  u;
            Socket soc=null;
    public void init()
    {

    public void start()
    {               //通过socket连接服务器  
        try{ 
            URL u=this.getCodeBase();
            String hostname=u.getHost(); 
          //  InetAddress addr = InetAddress.getLocalHost();                                                       
            soc=new Socket(hostname,4000);        //与服务器建立连接     
            in=new DataInputStream(soc.getInputStream()); //服务器发送过来的输入流
            out=new DataOutputStream(soc.getOutputStream());  // 客户端输出流      
            mythread=new Thread(this);
    mythread.start();

            }catch(IOException e){System.out.println("error:"+e);}      
     } 
    public void run() 
    {  
    try {
    Thread.sleep (3000);
        }catch(Exception e){System.out.println("error");}
      //out.writeUTF("search");    
       while(true)        
        { 
        try{               
              sin=in.readUTF();
      

  9.   

    我用的是UPD协议,你用的是TCP协议,所以我的思路不适用你!
    呵呵
      

  10.   

    我写的C/S结构socket用同样的端口通信没问题,可怎么写成B/S APPLET形式就不行,而且是客户、服务器在同一台机子上,狠心改了policy也没效果。大家看看我的policy对吗。
    grant {
      permission java.security.AllPermission;
      permission java.net.SocketPermission "*", "accept, connect, listen, resolve";
    };
    为什么没效果
      

  11.   

    我用policytool时,界面显示之后弹出一个错误:
    could not find policy file c:\documents and settings\administrator\.java.policy
    这个错误对policy 的权限设置有影响吗?我把java.policy考到这个目录下也没作用.