- 博客(7)
- 收藏
- 关注
原创 网络聊天离线功能(集合版)
思路:离线消息需要服务器在接收信息时判断要得到消息的用户是否在线,如果在线直接发送,如果不在线则存在ConcurrentHashMap<String,ArrayLis<Message>>中,在用户上线时判断离线消息集合是否有内容,如果有发送消息。在给第一次给集合添加消息时创建新ArrayList集合的同时别忘把消息放进去!在遍历消息时要new一个新的ObjectOutputStream。
2024-06-16 11:24:07
378
原创 Java什么时候需要用flush()方法
看到这里大家明白了吧,为了防止过于频繁的写操作 所以Java提供java.io.BufferedOutputStream类 内部持有一个缓冲区 默认不直接将数据写到硬盘上 而是存到缓冲区中 直到一定条件后触发(就是调用上面的flushBuffer() ) 也可以强制通过flush()方法提前触发,其实flush()也是通过out.write()将数据写入底层输出流的。所以说,关闭(close)输出流时,应先刷新(flush)换冲的输出流,话句话说就是:“迫使所有缓冲的输出数据被写出到底层输出流中”。
2024-06-11 17:59:47
629
原创 什么时候用,为什么用socket.shutdownOutput()
此时我们发现无论是客户端还是服务端程序都出现了阻塞,这是因为服务端不知道客户端什么时候写入结束,客户端也不知道服务端什么时候写入结束,就出现了阻塞;举个例子,比如A和B用对讲机讲话,A说:“行动”,B在想行动什么,A为什么不把话说完,我不知道该回什么。socket.shutdownOutput()是TCP字节输出流的结束标记,如不加可能会出现程序阻塞现象,当你希望停止向服务器发送数据,但仍然希望从服务器接收数据时,可以使用socket.shutdownOutput()来添加结束标记。
2024-06-11 17:31:40
664
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅