第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java IOException 流在服務器客戶端程序中關閉

Java IOException 流在服務器客戶端程序中關閉

心有法竹 2023-06-08 20:06:29
我正在嘗試制作一個服務器客戶端程序,該程序允許在不等待響應的情況下從服務器向客戶端發(fā)送多條消息,反之亦然。當第一個客戶端連接和斷開連接時,該程序工作正常。但是當我再次連接客戶端時,我得到了錯誤。這是我的服務器代碼:import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;import java.net.SocketException;import java.io.InputStreamReader;import java.io.BufferedReader;class Q2Server implements Runnable{    private ServerSocket serverSocket;    private Socket socket;    private DataOutputStream out;    private BufferedReader in1;    private DataInputStream in2;    private Thread read, write;    private String clientMsg, serverMsg;    public Q2Server (int port) throws IOException{        serverSocket = new ServerSocket(port);        while(true) {            try {                System.out.println("Waiting for client on port " + serverSocket.getLocalPort() + "...");                socket = serverSocket.accept();                System.out.println("Just connected to " + socket.getRemoteSocketAddress());                out = new DataOutputStream(socket.getOutputStream());                out.writeUTF("Thanks for connecting to " + socket.getLocalSocketAddress());                clientMsg = "";                serverMsg = "";                read = new Thread(this);                write = new Thread(this);                read.start();                write.start();                read.join();                write.join();            } catch(IOException e) {                e.printStackTrace();            } catch(InterruptedException ie) {                ie.printStackTrace();            }        }    }
查看完整描述

1 回答

?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

BufferedReader你得到一個例外,因為你試圖從一個不再存在的地方讀取,in1特別是。在第一次運行時,所有的流和閱讀器都按它們應該打開的方式打開,但是在從客戶端收到命令后close,您的服務器關閉了in1. 然后,當客戶端嘗試重新連接時,程序會嘗試將 的值賦給in1.readLine()which serverMsgis a String,但由于in1is 已不復存在,因此IOException會發(fā)生這種情況,因為BufferedReader已關閉并且無法從中讀取任何內容。

我想既然你想讓服務器保持運行,而客戶端可以在任何給定時間連接和斷開連接,這完全有道理,也許你不應該關閉在你的情況下向服務器提供鍵盤命令的命令BufferedReader。關閉它對我來說沒有意義,因為當客戶端斷開連接時你并沒有停止整個服務器,你只是關閉連接,但服務器仍然應該能夠接受命令。

希望這可以幫助。


查看完整回答
反對 回復 2023-06-08
  • 1 回答
  • 0 關注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號