2014-06-20 41 views
1

我有客户端和服务器的服务器站点。服务器运行良好,但客户端网站,当我试图阅读不是。从套接字读取后无法写入

但是,当我删除此代码,它的工作原理:

while((read = br.readLine()) != null){ 
    System.out.println("in reading"); 
    finale += read; 
    output.setText(finale); 
}   
br.close(); 

下面是完整的代码:

try{ 
    Socket connection = new Socket("localhost",PORT); 
    PrintWriter pw = new PrintWriter(new OutputStreamWriter(connection.getOutputStream())); 
    BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
    pw.println("hi connection estabilished"); 
    pw.flush(); 
    String str,read = "",finale = ""; 
    while(connection.isConnected()){ 
     System.out.println("start"); 
     if(zapis == true){ 
      str = input.getText(); 
      pw.println(str); 
      pw.flush(); 
      input.setText(""); 
      zapis = false; 
     } 
     System.out.println("top of the reading"); 
     while((read = br.readLine()) != null){ 
      System.out.println("in reading"); 
      finale += read; 
      output.setText(finale); 
     }   
     br.close(); 
    } 
} catch(IOException e) { 
    System.out.println("error " + e); 
} 

这是一边收听我的按钮的动作刚下课

class Listener implements ActionListener{ 

@Override 
public void actionPerformed(ActionEvent e) { 
    Main.zapis = true; 
} 
} 
+0

你可以试试这个PrintWriter pw = new PrintWriter(new OutputStreamWriter(connection.getOutputStream()),true); – ppuskar

+0

仍然无效 –

+0

你是什么意思“它不工作”?有什么异常? –

回答

0

显然,你在循环while(connection.isConnected()){之外打开br,但是y你可以在循环中关闭它。

你应该尝试写你的最后一块(就是那个让当你删除它的工作原理)为:与循环结束

System.out.println("top of the reading"); 
    while((read = br.readLine()) != null){ 
     System.out.println("in reading"); 
     finale += read; 
     output.setText(finale); 
    }   
} 
br.close();