//建立服务器 
import  java.net.*; 
import  java.io.*; 
   
public  class  Server{ 
private  ServerSocket ss; 
private  Socket socket; 
private  BufferedReader in; 
private  PrintWriter out; 
   
public  Server(){ 
try{  
ss=new ServerSocket(10000);
while  (true){ 
socket  =  ss.accept(); 
in  =  new  BufferedReader(new  InputStreamReader(socket.getInputStream())); 
out  =  new  PrintWriter(socket.getOutputStream()); 
   
String  line  =  in.readLine(); 
out.println("you  input  is  :"  +  line); 
out.close(); 
in.close(); 
socket.close(); 

ss.close();    //为什么这行会提示说未声明?

catch  (IOException  e){
e.printStackTrace();


public  static  void  main(String[] args){ 
new  Server(); 

}

解决方案 »

  1.   

    不会“会提示说未声明?”
    而是“无法执行到”
    因此你上面的while是死循环,又没有break语句,因此这句永远无法被执行到!
      

  2.   

    ss.close 放的位置不对吧,应放在catch后声明为一个finally块。另外close会抛出异常,应该设置捕获异常
      

  3.   

    ss.close也会扔出异常
    所以ss.close()应该放在try块里
      

  4.   

    /*
     * Server.java
     *
     * Created on 2006年8月3日, 上午12:13
     *
     * To change this template, choose Tools | Template Manager
     * and open the template in the editor.
     *//**
     *
     * @author Win XP
     */
    import  java.net.*; 
    import  java.io.*; 
       
    public  class  Server{ 
    private  ServerSocket ss; 
    private  Socket socket; 
    private  BufferedReader in; 
    private  PrintWriter out; 
       
    public  Server(){            
    try{  
    ss=new ServerSocket(10000);
    while  (true){ 
    socket  =  ss.accept(); 
    in  =  new  BufferedReader(new  InputStreamReader(socket.getInputStream())); 
    out  =  new  PrintWriter(socket.getOutputStream()); 
       
    String  line  =  in.readLine(); 
    out.println("you  input  is  :"  +  line); 
    out.close(); 
    in.close();                           
    }   
                    }catch  (IOException  e){
    e.printStackTrace();

                    try{socket.close(); }catch  (IOException  e){
    e.printStackTrace();
    }                
     }
    public  static  void  main(String[] args){ 
    new  Server(); 
            }
    }
    要通过编译可以这样写,但显然化蛇添足,不如直接写在Try内