首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

急F关于Java网络编程中多客户端对服务端的无法访问?解决办法

2012-01-18 
急~~~~~F关于Java网络编程中多客户端对服务端的无法访问?//Server.java/////////////////////////////////

急~~~~~F关于Java网络编程中多客户端对服务端的无法访问?
//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);    
                              }    
              }    
}    
运行之后,服务端总是端口被占,但能运行第一个客户,以后的就没什么反应了。    
高手们给个答案。急~~~~~~    


[解决办法]
server=new ServerSocket(8086); 写在while(true)里面 不报错才怪!
而且while(true)还是写在构造函数里,算你狠~

热点排行