需求是,一个客户端对应多服务器。我能想到的就是多线程,采用线程池来管理多线程。线程组中的每个线程都有一个socket对象来操控流。
List<SocketThread> tlist = new ArrayList<SocketThread>();//收集创建的线程的集合
SocketThreadt = new SocketThread();//新建的用来处理逻辑的线程,构造方法中传必要的参数
ThreadPoolManager.getInstance().execute(t);//线程池管理线程
tlist.add(t);//收集工作的线程,以便于后期方便取出线程中对应的socket对象
/**socket建立连接**/
SocketAddress address = new InetSocketAddress(ip, port);
Socket mSocket = new Socket();
try {
mSocket.setTcpNoDelay(false);
mSocket.setKeepAlive(true);
mSocket.connect(address, 15 * 1000);
InputStream mInputStream = mSocket.getInputStream();
OutputStream mOutputStream = mSocket.getOutputStream();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//其他的工作就是操作流,发包、拆包,这两个操作也可以使用线程维持,实现双工通讯
- 维持心跳:在每个SocketThreat中维持其对应的socket对象的心跳,亲测有效
andeoid中使用Handler即可实现循环的心跳发送
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。