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

一个简单客户端和服务器端,中间流的读取一直出有关问题。各位gg,jj帮忙看看

2013-08-13 
一个简单客户端和服务器端,中间流的读取一直出问题。。。。各位gg,jj帮忙看看啊大二实习,给布置的任务,还要求

一个简单客户端和服务器端,中间流的读取一直出问题。。。。各位gg,jj帮忙看看啊
大二实习,给布置的任务,还要求要能实现中文的输入,输出,但是出现问题,程序到了发出后就没动了,不知道错到哪里了,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 服务器
[解决办法]
 while(bufferedReader.read() != -1){
 oneLine = oneLine + bufferedReader.readLine();
 }
这边不要用循环 还是用 String oneLine=bufferedReader.readLine();
[解决办法]
在服务端LZ打印下oneLine,看看是否出现乱码。
另外,虽然jdk支持了String的case,建议还是转换成int,效率高些。

还有你的case要加括号的亲: case "双色球":    { returnLine="你中了双色球"; break;}

热点排行