我发现了一个聊天服务器的代码,我有一个简短的问题。这是关于以下摘录:从聊天服务器发送到聊天客户端的数组更新

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

是的,就是这样。每次接受客户端连接时,该列表都会增长。正如下面的答案所述,每次在控制台上写入一个字符串时,它都会一次向客户端广播一个字符串。 –

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

  1. 服务器收到消息怎么推送给app_「刹那问答24」浅谈FCM推送

    今天和大家聊一下FCM推送,它是GCM的升级版,也是安卓的官方推送,就比如腾讯旗下的几个社交软件,考虑到让用户及时收到消息,而能够让后台常驻,但这不经意间会让耗电量增加,但是有了FCM,根据它的运行机 ...

  2. 微信收到消息很慢无法连接服务器,微信消息延迟几分钟才收到 微信收消息有延迟的原因及解决办法...

    微信收到消息总是延迟怎么回事呢?第一个就是网络延迟,第二个是手机信号不好,第三个就是微信自己设置的问题.下面,我们来看看微信收消息有延迟的原因及解决办法. 微信消息延迟几分钟才收到怎么回事 一.网络延 ...

  3. 微信收到消息很慢无法连接服务器,微信接收消息有延迟原因及解决办法

    微信收到消息总是延迟怎么回事呢?第一个就是网络延迟,第二个是手机信号不好,第三个就是微信自己设置的问题.下面,我们来看看微信收消息有延迟的原因及解决办法. 软件名称:微信安卓版 V8.0.9 for ...

  4. telnet给服务器发消息,[摘抄]使用telnet命令直接发送

    需要注意的是,由于现在邮件服务器大多设置了身份验证,禁止非法连接发送邮件,主要是为了防止垃圾邮件的侵袭,所以以下方法不保障能完全成功,贴在这里供大家参考,了解两台邮件服务器之间的对接过程.如果你操作的 ...

  5. send函数给FTP服务器发消息,send函数给FTP服务器发消息

    send函数给FTP服务器发消息 内容精选 换一换 Kafka系列2:深入理解Kafka消费者上篇聊了Kafka概况,包含了Kafka的基本概念.设计原理,以及设计核心.本篇单独聊聊Kafka的生产者 ...

  6. 客户端关闭服务器收到消息推送消息,【网络编程】——WebSocket打开和关闭通道,消息发送...

    HTML5给Web浏览器带来了全双工TCP链接WebSocket标准服务器的能力.浏览器和可以与服务器创建链接,经过已创建的通讯信道来发送和接收数据而不须要由HTTP协议入额外的开销.javascri ...

  7. 微信收到消息很慢无法连接服务器,微信消息接收出现延迟?教你这样设置,问题立马得到解决...

    原标题:微信消息接收出现延迟?教你这样设置,问题立马得到解决 微信是大家日常生活工作中主要交流工具,可以说微信的出现在改变交流方式的同时,也方便了大家.但是近期有网友反应,微信出现信息接收延迟的现象, ...

  8. 微信收到消息很慢无法连接服务器,为什么微信接收消息总会延迟?4个原因要注意,解决方法在这里...

    现在大部分人都将微信作为自己的主要聊天工具,但是有的时候微信却会出现接收消息延迟的情况,而且有的人就算接收到了消息也不会有消息提醒.那到底是什么原因会使得微信出现消息接收延迟的情况呢?接下来,我们就一 ...

  9. ftp服务器收到文件后实时转发,ftp服务器转发

    ftp服务器转发 内容精选 换一换 七层负载均衡HTTP和HTTPS可以通过监控指标项可以查看ELB的平均响应时间,同时可以通过日志查看每一次请求的响应时间.登录控制台,并单击需要查询的负载均衡名称. ...

最新文章

  1. ubuntu16创建开机启动服务
  2. Python+Django+Nginx+Uwsgi 详细部署过程(爬坑过程,可以了解各个软件的执行流程,看过)
  3. access函数_ACCESS中的DLookUp函数是如何运算的?
  4. java mssql mysql,在JSP中访问MSSQLServer数据库_MySQL
  5. hive与依赖环境的交互
  6. android 安装包 权限,确定Android中已安装应用程序使用的权限列表
  7. mysql frm 恢复_mysql 从 frm 文件恢复 table 表结构的3种方法
  8. selector的使用
  9. 【鲲鹏HCIA考试】随堂习题卷四
  10. C语言实现动态数字雨
  11. 计算机网络考研常见 复试题总结
  12. 小飞鱼APK签名工具
  13. 数学狂想曲(十三)——勾股定理, Menelaus‘ Theorem
  14. VScode输入感叹号无法生成HTML模板
  15. 杨歌:金融电路与 Web3 经济模型原理
  16. 河北易县八佛洼辽三彩罗汉造像
  17. 解决导入maven工程时cannot resolve依赖问题
  18. 进程控制 父进程子进程 fork pid
  19. 手机屏幕保护DIY全教程
  20. 适合中小企业的ERP管理软件如何选择?

热门文章

  1. only 程序员的一个小总结
  2. 有知其下落者的nanshan
  3. 我们都有冲动了的飞鸽传书2011
  4. 局域网聊天9月局域网聊天
  5. 飞鸽传书网站最新改版
  6. 企业即时通讯市场增长500%
  7. matlab复杂噪声产生实验报告,matlab加入噪声 - 范文中心
  8. java naive方法_朴素贝叶斯方法(Naive Bayes Method)
  9. 嵌入式开发板03---看门狗、编写启动代码
  10. 哈佛大学单细胞课程|笔记汇总 (七)