gpt4 book ai didi

java - 同时处理多个常量套接字连接

转载 作者:行者123 更新时间:2023-12-02 04:30:15 24 4
gpt4 key购买 nike

我想用java编写一个可以同时处理多个用户的聊天应用程序。我读到有关套接字和线程池来限制线程数量的信息,但我无法想象如何处理例如同时 100 个套接字连接并且不会创建 100 个新线程。想法是,客户端在开始时连接,并且他的连接保持打开状态,直到他离开聊天。他可以向服务器发送数据以及接收其他用户的消息。

从套接字读取是阻塞操作,因此如果特定套接字连接中有新数据可用,我需要在超时的情况下循环检查所有用户的套接字?我的第一个想法是创建例如3 个线程用于处理所有连接用户的输入,3 个线程用于从服务器到客户端的输出通信,但我怎样才能实现这一点呢? Java 中是否有用于套接字的异步 API,我可以在其中定义用于输入/输出通信的线程池?

最佳答案

创建一个扩展ThreadClient类。编写所有方法,并在 void run() 方法中编写要在建立客户端连接时执行的代码。

服务器端,监听新连接。接受新连接,获取有关连接的信息,将其传递到构造函数中以创建新的Client对象,并将其添加到ArrayList 跟踪所有正在进行的连接并执行 start() 方法。因此,所有 Client 对象都在 Arraylist 中,并且它们同时运行。

大约一年前我制作了这样一个聊天应用程序。并且不要忘记一旦客户端断开连接就关闭连接,否则所有对象都会堆积起来并减慢应用程序的速度。我经历了惨痛的教训才明白这一点。

关于java - 同时处理多个常量套接字连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31572983/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com