大二实习,给布置的任务,还要求要能实现中文的输入,输出,但是出现问题,程序到了发出后就没动了,不知道错到哪里了,555.客户端
public class Client {
     
   public static void main(String[] args) throws IOException {  
        
  
        
        String send=null;
        System.out.println("请输入");
        Scanner getSend=new Scanner(System.in);           
        send=getSend.next();
        
        Socket s =new Socket("127.0.0.1",4242);
  
        System.out.println("Connected to server...sending echo string");  
             
        PrintWriter writer =new PrintWriter(s.getOutputStream());  
            
writer.println(send);
        writer.flush();  
        

InputStreamReader in = new InputStreamReader(s.getInputStream()); BufferedReader bufferedReader= new BufferedReader(in);  
  
String oneLine=bufferedReader.readLine();
 
System.out.println("客户端收到"+oneLine);
        

 bufferedReader.close();
 in.close();

        

     writer.close();
        s.close(); 

   }
}服务器public class Server {


     public static void main(String[] args) throws IOException {  
         
      // TODO Auto-generated method stub  
      
   
         ServerSocket servSocket = new ServerSocket(4242);  
         
         System.out.println("监听4242"); 
         
         boolean exist=true;
         
             
         while (exist) {  
              
          Socket clntSocket = servSocket.accept();  
             
             // 获取连接的客户端的 SocketAddress  
             
             SocketAddress clientAddress = clntSocket.getRemoteSocketAddress();  
              
             System.out.println("收到的地址为" + clientAddress);  
              
             InputStreamReader in = new InputStreamReader(clntSocket.getInputStream());              BufferedReader bufferedReader= new BufferedReader(in);  
  
 String oneLine= null;
 
 while(bufferedReader.read() != -1){
 oneLine = oneLine + bufferedReader.readLine();
 }
 
 System.out.println(oneLine);
 
 String returnLine="abcd";
 
 switch(oneLine){
 
 case "双色球":     returnLine="你中了双色球"; break;
 
 case "大乐透" :    returnLine="你中了大乐透"; break;
 
 
 case "英雄联盟" :   returnLine="LOL";     break;

 
 }
 
 if(oneLine=="关闭")
 exist=false;
 
 
 
 PrintWriter writer =new PrintWriter(clntSocket.getOutputStream());  
 
 writer.println("returnLine");
 
             System.out.println(" 客户端关闭连接");  
             writer.close();
             clntSocket.close();
             
             
         }  
   
     }
}
socket服务器

解决方案 »

  1.   

    楼主你这程序是怎么运行的呀!
    oneLine是String, 怎么能用在switch中呢?
      

  2.   

    如果jdk版本在7以上,这是可以的。
      

  3.   

     while(bufferedReader.read() != -1){
     oneLine = oneLine + bufferedReader.readLine();
     }
    这边不要用循环 还是用 String oneLine=bufferedReader.readLine();
      

  4.   

    在服务端LZ打印下oneLine,看看是否出现乱码。
    另外,虽然jdk支持了String的case,建议还是转换成int,效率高些。还有你的case要加括号的亲: case "双色球":    { returnLine="你中了双色球"; break;}