socket之多线程-开发笔记

需求是,一个客户端对应多服务器。我能想到的就是多线程,采用线程池来管理多线程。线程组中的每个线程都有一个socket对象来操控流。
  • 多线程控制的方法
List<SocketThread> tlist = new ArrayList<SocketThread>();//收集创建的线程的集合

SocketThreadt = new SocketThread();//新建的用来处理逻辑的线程,构造方法中传必要的参数

ThreadPoolManager.getInstance().execute(t);//线程池管理线程

tlist.add(t);//收集工作的线程,以便于后期方便取出线程中对应的socket对象
  • socketThread—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即可实现循环的心跳发送
posted @ 2017-09-08 09:46  林天佐  阅读(223)  评论(0编辑  收藏  举报