//Server.java  
//////////////////////////////////////  
package  javanet;  
import  java.net.*;  
import  java.io.*;  
 
public  class  Server  {  
//        create  a  server  
       private  ServerSocket  server;  
       private  int  clientCount=0;  
       /**  Creates  a  new  instance  of  Server  */  
       public  Server()  {  
               try  {  
                       while(true){  
                       server=new  ServerSocket(8086);  
                       System.out.println("正在等待客户的连接:");  
                       Socket  connectToClient=server.accept();  
                       clientCount++;  
                       System.out.println("客户"+clientCount+"已经连接上,服务器应答就绪:");  
                       HandleAClient  thread=new  HandleAClient(connectToClient);  
                       thread.start();    
                       }  
               }  
               catch(BindException  e){  
                       System.out.println("端口被占用");  
               }  
               catch  (IOException  ex)  {  
                       ex.printStackTrace();  
               }  
                 
       }  
         
       /**  
         *  @param  args  the  command  line  arguments  
         */  
       public  static  void  main(String[]  args)  {  
               //  TODO  code  application  logic  here  
               Server  server=new  Server();  
       }  
         
}  
///////////////////////////////////////////////////  
//Client.java  
package  javanet;  
import  java.net.*;  
import  java.io.*;  
 
public  class  Client  {  
       private  Socket  contentToServer;  
       /**  Creates  a  new  instance  of  Client  */  
       public  Client()  {  
               try  {  
                         System.out.println("请求服务器:");  
                         contentToServer=new  Socket("localhost",8086);  
                         System.out.println("请求成功,正成发送数据:");  
                         DataInputStream  disFormServer=new  DataInputStream(contentToServer.getInputStream());  
                         DataOutputStream  dosToServer=new  DataOutputStream(contentToServer.getOutputStream());  
                         BufferedReader  br=new  BufferedReader(new  InputStreamReader(System.in));  
                         double  r=0;  
                         while(r>=0){  
                         r=Double.parseDouble(br.readLine());  
                         dosToServer.writeDouble(r);  
                         double  area=disFormServer.readDouble();  
                         System.out.println("From  Server  is  "+area);  
                                   
                         }  
               }  catch  (UnknownHostException  ex)  {  
                       ex.printStackTrace();  
               }    
               catch(ConnectException  e){  
                       System.out.println("连接超时,找不到服务器。");  
                 
               }  
               catch  (IOException  ex)  {  
                       ex.printStackTrace();  
               }  
                 
         
       }  
       public  static  void  main(String[]  args){  
               Client  client=new  Client();  
       }  
         
}  
/////////////////////////////////////////////////////////  
//HandleAClient.java  
 
package  javanet;  
 import  java.io.*;  
 import  java.net.*;  
class  HandleAClient  extends  Thread{  
       private  Socket  connectToClient;  
       public  HandleAClient(Socket  socket){  
               connectToClient=socket;  
}  
       public  void  run(){  
               try{  
               DataInputStream  disFormClient=new  DataInputStream(connectToClient.getInputStream());  
               DataOutputStream  dosToClient=new  DataOutputStream(connectToClient.getOutputStream());  
               InetAddress  clientInetAddress=connectToClient.getInetAddress();  
               double  r=0;  
               
               while(r>=0){  
                       System.out.println("连接的客户机是:"+clientInetAddress.getHostName());  
                       r=disFormClient.readDouble();                        
                       double  area=Math.PI*r*r;                          
                       dosToClient.writeDouble(area);  
                       Thread.sleep(100);  
       }  
               }  
               catch(IOException  e){  
                       System.err.println(e);  
               }  
               catch(InterruptedException  e){  
                       System.err.println(e);  
               }  
       }  
}  
运行之后,服务端总是端口被占,但能运行第一个客户,以后的就没什么反应了。  
高手们给个答案。急~~~~~~