public class TcpLongSocket { public static final String TAG = "TcpLongSocket"; public static String HOST = "172"; public static int PORT = 44023; private ReadThread mReadThread;//接收消息线程 private InitSocketThread mInitSocketThread;//初始化线程,用来连接服务器 private Socket mSocket; private Handler sgameHandler; private boolean isReceiveMessage = false;//用来决定是否接收数据 private ExecutorService cachedThreadPool;//线程池,用来发送消息 public TcpLongSocket() { } public void initTcpLongSocket(String host, int port, Handler sgameHandler) { LogUtil.e(TAG, "initTcpLongSocket"); HOST = host; PORT = port; isReceiveMessage = true; cachedThreadPool = Executors.newCachedThreadPool(); this.sgameHandler = sgameHandler; mInitSocketThread = new InitSocketThread(); mInitSocketThread.start(); } class InitSocketThread extends Thread { @Override public void run() { super.run(); try { mSocket = new Socket(HOST, PORT); LogUtil.e(TAG, "开始连接服务器"); mReadThread = new ReadThread(); mReadThread.start(); while (connectJudge) { if (isSocketConnect()) { connectJudge = false; if (onConnectListener != null) { onConnectListener.onConnect(true); } } } } catch (UnknownHostException e) { e.printStackTrace(); LogUtil.e(TAG + "----------------", e.toString()); } catch (IOException e) { e.printStackTrace(); LogUtil.e(TAG + "----------------", e.toString()); } } } public boolean sendMsg(final byte[] req) { if (null == mSocket) { return false; } cachedThreadPool.execute(new Runnable() { @Override public void run() { try { if (!mSocket.isClosed() && !mSocket.isOutputShutdown()) { LogUtil.e(TAG, "--------------发送的信息------------------" + new String(req)); OutputStream os = mSocket.getOutputStream(); os.write(req); os.flush(); LogUtil.e(TAG, "--------------发送的信息-------发送成功-----------"); LogUtil.e(TAG, "--------------发送的信息-------发送成功-------req.length----" + req.length); } } catch (IOException e) { e.printStackTrace(); LogUtil.e(TAG, "--------------发送的信息----------
一个有服务器建立长连接的demo
最新推荐文章于 2021-06-03 20:37:31 发布