社区
Java EE
帖子详情
很紧急,求助各位大佬,关于java多线程和socket问题
LikeInsane
2019-10-07 07:07:18
我现在要用socket和多线程实现一个多人玩的游戏。要求每个人可以看到所有人的计分表,如图
于是我在server端弄了个list叫allOut,想每次连接一个客户端就把他的输出流装进去。
然后遍历发给所有客户端。但是现在问题是。第一个客户端连上后,allOut长度为1。所以遍历时候也只是输出了自己的对象。只有到最后一个客户端allOut这个list才把所有的输出流装进去了。所以如何让所有线程可以共享这个allOut List?或者有什么更好的方法可以实现这个需求呢?真的很紧急,拜托各位大佬了
...全文
219
5
打赏
收藏
很紧急,求助各位大佬,关于java多线程和socket问题
我现在要用socket和多线程实现一个多人玩的游戏。要求每个人可以看到所有人的计分表,如图 于是我在server端弄了个list叫allOut,想每次连接一个客户端就把他的输出流装进去。 然后遍历发给所有客户端。但是现在问题是。第一个客户端连上后,allOut长度为1。所以遍历时候也只是输出了自己的对象。只有到最后一个客户端allOut这个list才把所有的输出流装进去了。所以如何让所有线程可以共享这个allOut List?或者有什么更好的方法可以实现这个需求呢?真的很紧急,拜托各位大佬了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qybao
2019-10-08
打赏
举报
回复
我觉得应该有个游戏用户列表来管理socke和UI
当游戏有戏用户加入时(新用户的socke和UI加入游戏用户列表),触发某个回调
回调方法就是遍历游戏用户表,把UI信息通过socket发给各个游戏用户
ninuxGithub
2019-10-08
打赏
举报
回复
理解一下楼主的大概的意思就是 随着用户陆续的登录,就会有玩家的数量增加, 每个玩家都有类来封装了游戏中的参数, 这些数据是动态的, 需要实时的推送给页面前段; 这其实一个实时推送的问题; 我们之前有过项目经验, 提示你可以采用websocket + mina 建立tcp长连接的方式, 对session进行维护起来, 然后我们需要例如每隔1s就采用我们维护的session来push一次数据(玩家的得分数据); websocket 和 mina 之前通信需要通过一个filter 可以参考github开源项目:https://github.com/coopci/mina-websocket-filter.git
瘦死的黑骆驼
2019-10-08
打赏
举报
回复
没明白你说的“只有到最后一个客户端allOut这个list才把所有的输出流装进去了”,你不是多线程吗,每次连接一个客户端直接加到集合就是了,你的集合最好这样定义 public static volatile List<Socket> clientSockets = new ArrayList<Socket>();
小包包007
2019-10-07
打赏
举报
回复
如何让线程共享list集合?使用单例模式下构建个线程安全的list就好了
oh_Maxy
2019-10-07
打赏
举报
回复
要看你做的 是端游还是页游了。
端游,可以考虑用NIO技术,可以考虑Netty框架。
页游的话,可以关注下webSocket。
java
socket
缓冲区,:请教怎么解决
JAVA
socket
通信时的缓冲区的清空有关
问题
本文探讨了使用
Java
Servlet实现
Socket
通信时遇到的
问题
,即无法正确清空输入缓冲区导致数据混淆。作者尝试每次连接不同的客户端,但读取的数据总是之前的残留数据。
java
socket
——心跳包
本文详细介绍了心跳包在
Socket
连接中的作用及其实现方法,包括如何设置
Socket
属性以维持连接稳定,例如启用keep-alive功能及允许发送
紧急
数据等。
java
NIO到底能解决什么
问题
本文探讨了使用
Java
NIO解决传统IO
多线程
问题
的方法。通过引入NIO的关键概念,如Buffer、Channel和Selector,实现了单一线程管理多个
Socket
连接的目标,有效减少了线程数量并提高了效率。
Java
Socket
实现多客户端
本文介绍了一种使用
Java
Socket
编程实现多客户端与服务器通信的方法。通过创建ReadAndWriteClient类,每个客户端都能独立地读取和写入数据,实现了
多线程
处理。测试类RWClientStart展示了如何启动多个客户端并保持连接。
4、
多线程
和网络编程
本文介绍了
多线程
与网络编程的基础概念和技术细节,涵盖了进程与线程的区别、线程的生命周期、线程调度机制、
Socket
通信原理及其实现方法,并展示了如何利用
多线程
处理网络请求。
Java EE
67,535
社区成员
225,851
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章