我写了一个类,目的是监听端口,当客户端发送请求时,这个类根据相应的请求做出相应的处理,这个类在有main的情况下单独运行OK,
能接收到请求,但是我要把这个类放到Applet里,怎么才能让这个类随applet启动自动启动,自动一直运行,一旦收到客户端请求就处理。
注意:没有其他方法调用,我加了线程也不能自己启动。希望各位帮帮忙,以下是我的代码:
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.net.ServerSocket;
import java.net.Socket;public class ChangeModel implements Runnable{
public static final String CHARSET = "UTF-8"; 
private TransmitApplet transmitApplet;  //处理方法类
private Thread thread;   //线程
private int port = 8821;  //端口
private int p1=49;     
private int p4=50;
private int p6=51;

private boolean close_flag = true;
@Override
public void run(){
Socket s = null;
try{
ServerSocket ss = new ServerSocket(port);
while (true){
s.setSoTimeout(1000);
//Accept方法用于产生"阻塞",直到接受到一个连接,并且返回一个客户端的Socket对象实例   
System.out.println("准备接受请求!");
s = ss.accept();
//s.getInputStream()获得网络连接输入,同时返回一个IutputStream对象实例  
/*************这个方法接收整型**************************/
DataInputStream dis = new DataInputStream(new BufferedInputStream(s.getInputStream()));
Integer num=dis.read();

//处理
if(num.equals(p1)){
transmitApplet.changeScreenMode(p1);
System.out.println("Int 类型 " + num);
}
else if(num.equals(p4)){
transmitApplet.changeScreenMode(p4);
}
else if(num.equals(p6)){
transmitApplet.changeScreenMode(p6);
}
s.close(); //关闭socket                  
System.out.println("请求完毕!");
}
}
catch (Exception e){
System.out.println("连接错误");
//e.printStackTrace();
pause(100);
restart();
}
}   

/**
 * 启动线程
 */
public void start(){
thread = new Thread(this);
thread.setPriority(Thread.MIN_PRIORITY);
thread.start();
}
  
/**
 * 重新启动线程
 */
public void restart(){
if(!close_flag){
thread = new Thread(this);
thread.setPriority(Thread.MIN_PRIORITY);
thread.start();
}
}

/**
 * 休眠 
 * @param s
 */
private void pause(int s){
try{
Thread.sleep(s);
}
catch(InterruptedException ie){
ie.printStackTrace();
}
}

    public static void main(String arg[]) {   
        new ChangeModel().start();   
    }}