簡體   English   中英

還如何允許服務器上的客戶端發送多個消息? 爪哇

[英]How too allow a client on a server to send multiple messages? JAVA

我一直在建立一個聊天室,多個客戶端可以在同一服務器上進行連接和交談。 我唯一的問題是讓每個客戶端發送多個消息。 我一直在嘗試使用不同的方法來循環執行此操作,但是我遇到了一些問題。 任何幫助將不勝感激:)謝謝。 這是代碼:

public class Client {

public static void main(String[] args){

    Scanner clientInput = new Scanner(System.in);

    try {
        Socket SOCK = new Socket("localhost", 14001);
        System.out.println("Client started!");

        //Streams
        while(true){
        OutputStream OUT = SOCK.getOutputStream(); //writing data to a destination
        PrintWriter WRITE = new PrintWriter(OUT); // PrintWriter prints formatted representations of objects to a text-output stream

        InputStream in = SOCK.getInputStream(); //reads data from a source
        BufferedReader READ = new BufferedReader(new InputStreamReader(in));
        //---------------------------------
        System.out.print("My input: ");
        String atServer =  clientInput.nextLine();

        WRITE.write(atServer + "\n");
        WRITE.flush();  //flushes the stream

        String stream = null;

        while((stream = READ.readLine()) != null){  //if stream is not empty
            System.out.println("Client said: " + stream);
        }

        READ.close();
        WRITE.close();
        }

    } catch (UnknownHostException e){
        e.printStackTrace();
    }
    catch (IOException e) {
        e.printStackTrace();
    }
}
}

我已經嘗試過使用while循環不斷請求輸入,但似乎沒有用。

您是在READ.readLine()while循環之外制作的嗎? 也許您永遠不會結束輸入字符,而那永遠也不會終止。 另外,您將在while循環結束時關閉READ和WRITE,然后期望它們在下一次迭代時打開。 將這些和close語句移至與Socket相同的層。 這樣,每次發送郵件時,客戶端都希望服務器響應。 如果您不希望它們相互依賴,建議您在while(true)循環中將接收邏輯移至其自己的線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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