1. 程式人生 > 實用技巧 >EventBus tcp for android

EventBus tcp for android

package cn.endv.tianyun.tcp;


import android.util.Log;

import org.greenrobot.eventbus.EventBus;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.net.Socket;

public class TcpClient {
    public static Socket socket;

    public static void startClient(final
String address ,final int port){ if (address == null){ return; } if (socket == null) { new Thread(new Runnable() { @Override public void run() { try { Log.i("tcp", "啟動客戶端"); socket
= new Socket(address, port); Log.i("tcp", "客戶端連線成功"); PrintWriter pw = new PrintWriter(socket.getOutputStream()); InputStream inputStream = socket.getInputStream(); byte[] buffer = new byte[1024];
int len = -1; while ((len = inputStream.read(buffer)) != -1) { String data = new String(buffer, 0, len); Log.i("tcp", "收到伺服器的資料---------------------------------------------:" + data); EventBus.getDefault().post(new MessageClient(data)); } Log.i("tcp", "客戶端斷開連線"); pw.close(); } catch (Exception EE) { EE.printStackTrace(); Log.i("tcp", "客戶端無法連線伺服器"); }finally { try { socket.close(); } catch (IOException e) { e.printStackTrace(); } socket = null; } } }).start(); } } public static void sendTcpMessage(final String msg){ if (socket == null ) { TcpClient.startClient( "192.168.0.11" , 9002); Log.i("tcp", "重啟動客戶端"); } // if (socket == null && !socket.isConnected()) { // TcpClient.startClient( "192.168.0.11" , 9002); // Log.i("tcp", "重啟動客戶端"); // } if (socket != null && socket.isConnected()) { new Thread(new Runnable() { @Override public void run() { try { socket.getOutputStream().write(msg.getBytes()); socket.getOutputStream().flush(); } catch (IOException e) { e.printStackTrace(); } } }).start(); } } }