private int socket_port=9999; private boolean ifListen =true; /** * 开始监听 */ private Thread socketThread = new Thread() { public void run() { while (true) { try { if (serverSocket == null && ifListen) { serverSocket = new ServerSocket(socket_port); // serverSocket.setSoTimeout(60*1000); } else if (serverSocket != null) { socket = serverSocket.accept(); if (socket != null) { DataInputStream in = new DataInputStream(new BufferedInputStream(socket .getInputStream())); try { ByteArrayOutputStream outStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = in.read(buffer)) != -1) { outStream.write(buffer, 0, len); } byte[] data = outStream.toByteArray(); dataString = new String(data, "utf-8"); AppLog.Log(dataString); } catch (Exception e) { AppLog.Log(AppLog.LogType.ERROR, "DataService read: " + e); destorySocket(); } } } } catch (IOException e1) { AppLog.Log(AppLog.LogType.ERROR, "DataService accept: " + e1); destorySocket(); } try { Thread.sleep(Config.KEEP_ALIVE_RESPONSE_TIMEOUT); } catch (InterruptedException e) { AppLog.Log(e.toString()); } } } }; public void startListen() { ifListen = true; if (!ifSocketThreadStart) { ifSocketThreadStart = true; socketThread.start(); } } public void stopListen() { ifListen = false; destorySocket(); } private void destorySocket() { AppLog.Log("destorySocket"); try { if (serverSocket != null && !serverSocket.isClosed()) { serverSocket.close(); } } catch (IOException e) { AppLog.Log(e.toString()); } finally { serverSocket = null; } try { if (socket != null && !socket.isClosed()) { socket.close(); } } catch (IOException e) { AppLog.Log(e.toString()); } finally { socket = null; } }