日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

服务器收到消息加入数组,从聊天服务器发送到聊天客户端的数组更新

發布時間:2025/3/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 服务器收到消息加入数组,从聊天服务器发送到聊天客户端的数组更新 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我發現了一個聊天服務器的代碼,我有一個簡短的問題。這是關于以下摘錄:從聊天服務器發送到聊天客戶端的數組更新

clientOutputStreams.add(作家);

顯然,這種字符串數組應該被發送到聊天客戶端,但我不明白怎么陣列不斷被更新 - 即如何發送到由特殊的聊天客戶端的服務器字符串數組中accumualated然后送回給所有聊天客戶。你做?將不勝感激你的幫助。

import java.io.*;

import java.net.*;

import java.util.*;

public class VerySimpleChatServer {

ArrayList clientOutputStreams;

public class ClientHandler implements Runnable {

BufferedReader reader;

Socket sock;

public ClientHandler(Socket clientSOcket) {

try {

sock = clientSOcket;

InputStreamReader isReader = new InputStreamReader(sock.getInputStream());

reader = new BufferedReader(isReader);

} catch (Exception ex) { ex.printStackTrace(); }

}

public void run() {

String message;

try {

while ((message = reader.readLine()) != null) {

System.out.println("read " + message);

tellEveryone(message);

}

} catch (Exception ex) { ex.printStackTrace(); }

}

}

public static void main(String[] args) {

new VerySimpleChatServer().go();

}

public void go() {

clientOutputStreams = new ArrayList();

try {

ServerSocket serverSock = new ServerSocket(5000);

while(true) {

Socket clientSocket = serverSock.accept();

PrintWriter writer = new PrintWriter(clientSocket.getOutputStream());

clientOutputStreams.add(writer);

Thread t = new Thread(new ClientHandler(clientSocket));

t.start();

System.out.println("got a connection");

}

} catch (Exception ex) { ex.printStackTrace(); }

}

public void tellEveryone(String message) {

Iterator it = clientOutputStreams.iterator();

while (it.hasNext()) {

try {

PrintWriter writer = (PrintWriter) it.next();

writer.println(message);

writer.flush();

} catch (Exception ex) { ex.printStackTrace(); }

}

}

}

2017-10-17

Duke

+1

clientOutputStreams不是一個* strings *數組,而是一個* streams * =>數組,即給客戶端的“管道”。 –

+0

是否意味著如果總共有10個客戶端,那么clientOutputStream的大小是10? –

+0

是的,就是這樣。每次接受客戶端連接時,該列表都會增長。正如下面的答案所述,每次在控制臺上寫入一個字符串時,它都會一次向客戶端廣播一個字符串。 –

總結

以上是生活随笔為你收集整理的服务器收到消息加入数组,从聊天服务器发送到聊天客户端的数组更新的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。