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