alla fine ho risolto così..
codice:
/**
 * 
 */
package gccb;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @(#)CCServer.java
 *
 *
 * @author Raffaella 
 * @version 1.00 2007/4/24
 */

public class CCServer extends Thread {

	ServerSocket s;
	Socket socket;
	public static final int PORT = 6502;

	public CCServer() {
        start();
    }

    public void run() {
    	try{
    		s = new ServerSocket(6502);
    	}
        catch (IOException e) {
        	try{
        		s.close();
        	}
            catch (IOException ex) {
            	System.err.print("err");
            }
        }
        do {
        	try{
            socket = s.accept();
        	}
            catch (IOException e) {
            	try{
                    socket.close();
                }
                catch (IOException ex) {
                    System.err.print("err");
                }
            }
            try {
                new ServeOneClient(socket);
             }
            catch (IOException e) {
            	try{
                    socket.close();
                }
                catch (IOException ex) {
                    System.err.print("err");
                }
            }
        } while (true);
    }
}
ma se volessi mettere la dikiarazione dei socket nel metodo run come devo fare per non avere inizializzazioni e di eccezioni IO?
anke perkè se li mettessi in un blocco try la dikiarazione poi è locale al try... e invece no deve essere visibile a tutto il metodo run()
se lo dikiaro solo mi da errore perkè giustamente la devo dikiarare se la diakiaro mi dice ke devo gestire IOexception.. -.- come faccio?