[英]After reading from socket can't write
我有客戶端和服務器服務器站點。 服務器工作正常,但是當我嘗試讀取時,客戶端站點卻沒有。
但是,當我刪除此代碼時,它可以工作:
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;
}
}
很顯然,你打開br
循環外while(connection.isConnected()){
但你關閉它的循環。
您應該嘗試將最后一個塊(將其刪除時使之工作的塊)編寫為:
System.out.println("top of the reading");
while((read = br.readLine()) != null){
System.out.println("in reading");
finale += read;
output.setText(finale);
}
}
br.close();
閉環之外 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.