服务器收到消息加入数组,从聊天服务器发送到聊天客户端的数组更新
我发现了一个聊天服务器的代码,我有一个简短的问题。这是关于以下摘录:从聊天服务器发送到聊天客户端的数组更新
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
是的,就是这样。每次接受客户端连接时,该列表都会增长。正如下面的答案所述,每次在控制台上写入一个字符串时,它都会一次向客户端广播一个字符串。 –
服务器收到消息加入数组,从聊天服务器发送到聊天客户端的数组更新相关推荐
- 服务器收到消息怎么推送给app_「刹那问答24」浅谈FCM推送
今天和大家聊一下FCM推送,它是GCM的升级版,也是安卓的官方推送,就比如腾讯旗下的几个社交软件,考虑到让用户及时收到消息,而能够让后台常驻,但这不经意间会让耗电量增加,但是有了FCM,根据它的运行机 ...
- 微信收到消息很慢无法连接服务器,微信消息延迟几分钟才收到 微信收消息有延迟的原因及解决办法...
微信收到消息总是延迟怎么回事呢?第一个就是网络延迟,第二个是手机信号不好,第三个就是微信自己设置的问题.下面,我们来看看微信收消息有延迟的原因及解决办法. 微信消息延迟几分钟才收到怎么回事 一.网络延 ...
- 微信收到消息很慢无法连接服务器,微信接收消息有延迟原因及解决办法
微信收到消息总是延迟怎么回事呢?第一个就是网络延迟,第二个是手机信号不好,第三个就是微信自己设置的问题.下面,我们来看看微信收消息有延迟的原因及解决办法. 软件名称:微信安卓版 V8.0.9 for ...
- telnet给服务器发消息,[摘抄]使用telnet命令直接发送
需要注意的是,由于现在邮件服务器大多设置了身份验证,禁止非法连接发送邮件,主要是为了防止垃圾邮件的侵袭,所以以下方法不保障能完全成功,贴在这里供大家参考,了解两台邮件服务器之间的对接过程.如果你操作的 ...
- send函数给FTP服务器发消息,send函数给FTP服务器发消息
send函数给FTP服务器发消息 内容精选 换一换 Kafka系列2:深入理解Kafka消费者上篇聊了Kafka概况,包含了Kafka的基本概念.设计原理,以及设计核心.本篇单独聊聊Kafka的生产者 ...
- 客户端关闭服务器收到消息推送消息,【网络编程】——WebSocket打开和关闭通道,消息发送...
HTML5给Web浏览器带来了全双工TCP链接WebSocket标准服务器的能力.浏览器和可以与服务器创建链接,经过已创建的通讯信道来发送和接收数据而不须要由HTTP协议入额外的开销.javascri ...
- 微信收到消息很慢无法连接服务器,微信消息接收出现延迟?教你这样设置,问题立马得到解决...
原标题:微信消息接收出现延迟?教你这样设置,问题立马得到解决 微信是大家日常生活工作中主要交流工具,可以说微信的出现在改变交流方式的同时,也方便了大家.但是近期有网友反应,微信出现信息接收延迟的现象, ...
- 微信收到消息很慢无法连接服务器,为什么微信接收消息总会延迟?4个原因要注意,解决方法在这里...
现在大部分人都将微信作为自己的主要聊天工具,但是有的时候微信却会出现接收消息延迟的情况,而且有的人就算接收到了消息也不会有消息提醒.那到底是什么原因会使得微信出现消息接收延迟的情况呢?接下来,我们就一 ...
- ftp服务器收到文件后实时转发,ftp服务器转发
ftp服务器转发 内容精选 换一换 七层负载均衡HTTP和HTTPS可以通过监控指标项可以查看ELB的平均响应时间,同时可以通过日志查看每一次请求的响应时间.登录控制台,并单击需要查询的负载均衡名称. ...
最新文章
- ubuntu16创建开机启动服务
- Python+Django+Nginx+Uwsgi 详细部署过程(爬坑过程,可以了解各个软件的执行流程,看过)
- access函数_ACCESS中的DLookUp函数是如何运算的?
- java mssql mysql,在JSP中访问MSSQLServer数据库_MySQL
- hive与依赖环境的交互
- android 安装包 权限,确定Android中已安装应用程序使用的权限列表
- mysql frm 恢复_mysql 从 frm 文件恢复 table 表结构的3种方法
- selector的使用
- 【鲲鹏HCIA考试】随堂习题卷四
- C语言实现动态数字雨
- 计算机网络考研常见 复试题总结
- 小飞鱼APK签名工具
- 数学狂想曲(十三)——勾股定理, Menelaus‘ Theorem
- VScode输入感叹号无法生成HTML模板
- 杨歌:金融电路与 Web3 经济模型原理
- 河北易县八佛洼辽三彩罗汉造像
- 解决导入maven工程时cannot resolve依赖问题
- 进程控制 父进程子进程 fork pid
- 手机屏幕保护DIY全教程
- 适合中小企业的ERP管理软件如何选择?