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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Java IOException 流在服務(wù)器客戶端程序中關(guān)閉

Java IOException 流在服務(wù)器客戶端程序中關(guān)閉

心有法竹 2023-06-08 20:06:29
我正在嘗試制作一個(gè)服務(wù)器客戶端程序,該程序允許在不等待響應(yīng)的情況下從服務(wù)器向客戶端發(fā)送多條消息,反之亦然。當(dāng)?shù)谝粋€(gè)客戶端連接和斷開連接時(shí),該程序工作正常。但是當(dāng)我再次連接客戶端時(shí),我得到了錯(cuò)誤。這是我的服務(wù)器代碼: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 回答

?
料青山看我應(yīng)如是

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊

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

我想既然你想讓服務(wù)器保持運(yùn)行,而客戶端可以在任何給定時(shí)間連接和斷開連接,這完全有道理,也許你不應(yīng)該關(guān)閉在你的情況下向服務(wù)器提供鍵盤命令的命令BufferedReader。關(guān)閉它對(duì)我來(lái)說(shuō)沒有意義,因?yàn)楫?dāng)客戶端斷開連接時(shí)你并沒有停止整個(gè)服務(wù)器,你只是關(guān)閉連接,但服務(wù)器仍然應(yīng)該能夠接受命令。

希望這可以幫助。


查看完整回答
反對(duì) 回復(fù) 2023-06-08
  • 1 回答
  • 0 關(guān)注
  • 173 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)