簡體   English   中英

從套接字讀取后無法寫入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM