java:ServerSocket中获取所有连接上的Socket
如题目,能否在ServerSocketserver中,获取得到所有accpet了的且仍处于连接当中的Socket...
如题目,能否在ServerSocket server中,获取得到所有accpet了的且仍处于连接当中的Socket
展开
3个回答
展开全部
可以的。
首先确保你已经建立了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;
}
首先确保你已经建立了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;
}
展开全部
就我目前的知识而言,ServerSocket中是不能获取得到所有accpet了的且仍处于连接当中的Socket,ServerSocket并没有提供类似的方法,accpet是一个阻塞操作操作,在单线程的ServerSocket中,只有处理完当前的socket之后才会继续处理下一个socket请求。在支持并发的情况下,我们一般把socket请求交给线程池来处理。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同问
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询