如题目

解决方案 »

  1.   

    package com.bb;import   java.io.*;   
      import   java.net.*;   
      import   java.util.*;   
      public   class   receiveServer   
      {   
          final   int   RECEIVE_PORT=8080;   //该服务器的端口号   
          public   receiveServer()   
          {   
              ListenThread   listen=new   ListenThread();   
              listen.start();   
          }   
          public   static   void   main(String   args[])   
          {   
              new   receiveServer();   
          }     
            
          class   ListenThread   extends   Thread     //***     本类<异步>完成对服务器端口的侦听   
          {   
              ServerSocket   rServer=null;   //ServerSocket的实例   
              Socket   request=null;         //用户请求的套接字   
              Thread   buildThread=null;     //***   Thread?   
              public   ListenThread()   
              {   
                  try   
                  {   
                      rServer   =   new   ServerSocket(RECEIVE_PORT);   //初始化ServerSocket   
                      System.out.println("Listen   Thread   is   ready!   Listen   Port:   "   +   RECEIVE_PORT);   
                      //this.start();     //***   放到类外面控制更灵活   
                  }   
                  catch(IOException   e)   
                  {   
                      System.out.println(e.getMessage());   
                  }               
              }   
              public   void   run()   
              {   
                  try   
                  {   
                      while   (true)     
                      {     
                          request   =   rServer.accept();   ////等待用户请求并接收客户机连接请求   
                          buildThread   =   new   buildSocketThread(request);   //生成buildSocketThread的实例   
                          buildThread.start();   //启动serverThread线程   
                      }   
                  }   
                  catch(IOException   e)   
                  {   
                      System.out.println(e.getMessage());   
                  }       
              }   
          }   
        
          class   buildSocketThread   extends   Thread     //***     本类完成与客户端请求建立一个socket连接,并接收客户端的指令   
          {   
              Socket   clientRequest;   //用户连接的通信套接字   
              BufferedReader   input;     
              PrintWriter   output;     
              public   buildSocketThread(Socket   s)     
              {   
                  System.out.println("one   connected");   //***     输出接收事件,要不然服务器老是象死了一样没反应!!   
                  //   
                  this.clientRequest=s;   //接收receiveServer传来的套接字   
                  InputStreamReader   reader;   
                  OutputStreamWriter   writer;   
                  try   
                  {     
                      reader=new   InputStreamReader(clientRequest.getInputStream());//初始化输入、输出流   
                      writer=new   OutputStreamWriter(clientRequest.getOutputStream());   
                      input=new   BufferedReader(reader);   
                      output=new   PrintWriter(writer,true);   
                  }   
                  catch(IOException   e)   
                  {   
                      System.out.println(e.getMessage());   
                  }   
                  output.println("Welcome   to   the   server!");   //客户机连接欢迎词   
                  output.println("Now   is:   "+new   java.util.Date()+"   "+   "Port:"+clientRequest.getLocalPort());   
                  output.println("What   can   I   do   for   you?");   
              }   
              public   void   run()   
              {     
                  String   command=null;   //用户指令   
                  String   str=null;   
                  boolean   done=false;   
                  while(!done)   
                  {               
                      try   
                      {   
                          str=input.readLine().trim();   //接收客户机信息   
                          if(str=="")       //***   防止客户端socket断开,下面执行空指针   
                              ;     
                          else   
                          {   
                              System.out.println("received   message:   "   +   str);     //就没有执行到这句,难道没收到客户端的信息?   
                              output.println("server   response:   "   +   str);       //为什么客户端收不到信息!!!?       
                              output.flush();   
                          }   
                            
                      }   
                      catch(IOException   e){System.out.println(e.getMessage());}   
                  }     
                  try   
                  {   
                      clientRequest.close();   //关闭套接字   
                  }   
                  catch(IOException   e){System.out.println(e.getMessage());}   
                  command=null;   
              }         //void   run   
          }             //buildSocketThread   
      }