java:ServerSocket中获取所有连接上的Socket

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java:ServerSocket中获取所有连接上的Socket相关的知识,希望对你有一定的参考价值。

如题目,能否在ServerSocket server中,获取得到所有accpet了的且仍处于连接当中的Socket

可以的。
首先确保你已经建立了ServerSocket(对象名字是server),并接受到了连接:
ArrayList<Socket > sockets = new ArrayList<Socket>(); //保存所有接受的socket
while(true) //一直接受连接
Socket s = server.accept();

sockets.add(s);



///得到仍处于连接当中的Socket
public ArrayList<Socket > getConnectedSockets()
ArrayList<Socket > alivedSockets = new ArrayList<Socket>();

for(int i=0;i<sockets.size();i++)

if(sockets.get(i).isConnected())
alivedSockets .add(sockets.get(i));





return alivedSockets;
参考技术A 就我目前的知识而言,ServerSocket中是不能获取得到所有accpet了的且仍处于连接当中的Socket,ServerSocket并没有提供类似的方法,accpet是一个阻塞操作操作,在单线程的ServerSocket中,只有处理完当前的socket之后才会继续处理下一个socket请求。在支持并发的情况下,我们一般把socket请求交给线程池来处理。 参考技术B 同问

以上是关于java:ServerSocket中获取所有连接上的Socket的主要内容,如果未能解决你的问题,请参考以下文章

在“搜索”连接上请求 500 条记录超过了 graphql 中 100 条记录的“第一”限制

中继重新获取失败...错误中继无法协调连接上的边缘

中继无法协调连接上的边缘

在应用商店连接上查看应用商店选项不可用

Socksifying Java ServerSocket - 如何处理

vpn连接上不能上网