Android开发TCP连接

来源:互联网 发布:知乎 最美av神作 编辑:程序博客网 时间:2024/04/29 00:20

一、添加依赖
compile ‘com.koushikdutta.async:androidasync:2.+’
二、应用

public class TCPHandle {    public static long flowNumber=0;    public static boolean isOnWebCall=false;    public static final int PORT = "端口号";    public static final String HOST = "ip地址";    public static AsyncSocket _asysocket;    public  static String TOken="";    public static String Uid="";    /**     * 判断某个界面是否在前台     * @param context   Context     * @param className 界面的类名     * @return 是否在前台显示     */    public static boolean isForeground(Context context, String className) {        if (context == null || TextUtils.isEmpty(className))            return false;        ActivityManager am = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);        List<ActivityManager.RunningTaskInfo> list = am.getRunningTasks(1);        for (ActivityManager.RunningTaskInfo taskInfo : list) {            if (taskInfo.topActivity.getShortClassName().contains(className)) { // 说明它已经启动了                return true;            }        }        return false;    }    private static void handleConnectCompleted(Exception ex, final AsyncSocket socket) {        isConnecting=false;        if (ex != null) {            System.out.println(ex);            return;        }        _asysocket = socket;        socket.setDataCallback(new DataCallback() {            @Override            public void onDataAvailable(DataEmitter emitter, ByteBufferList bb) {                byte[] _data = bb.getAllByteArray();                System.out.println("Recdata:"+Protrol.getInstance().bytesToHexString(_data));                //需要验证数据有效转义还原之类                if(Protrol.getInstance().isValid(_data)){    //检验有效性                    byte[]data =  Protrol.getInstance().getCheckData(_data);                    switch(data[1]){                            case (byte) 0x81:    //登录                            if(data[2]==0x01){                                RxBus.get().post(BusAction.LogIn_Home,data);   //登录成功                            }                            break;                        default:                            break;                    }                }            }        });        socket.setClosedCallback(new CompletedCallback() {            @Override            public void onCompleted(Exception ex) {                _asysocket = null;                Uid="";                TOken="";                if (ex != null) {                    System.out.println(ex);                }                System.out.println("[Client] Successfully closed connection");            }        });        socket.setEndCallback(new CompletedCallback() {            @Override            public void onCompleted(Exception ex) {                _asysocket = null;                Uid="";                TOken="";                if (ex != null) {                    System.out.println(ex);                }                System.out.println("[Client] Successfully end connection");            }        });    }    public static boolean writedString(String datastring) {        if (_asysocket != null) {            byte[] send = datastring.getBytes();            ByteBufferList data = new ByteBufferList(send);            try{                _asysocket.write(data);            }catch (Exception e){                    e.printStackTrace();            }            return true;        }        return false;    }    public static boolean writedData(byte[] send) {        if (_asysocket != null) {            ByteBufferList data = new ByteBufferList(send);            try{                _asysocket.write(data);            }catch (Exception e){                e.printStackTrace();            }            System.out.println("发送数据到服务器:");            System.out.println(Protrol.getInstance().bytesToHexString(send));            return true;        }        return false;    }    public static boolean isConnecting=false;    public static synchronized boolean Connect() {        isConnecting=true;        if (AsyncServer.getDefault().isRunning()) {            RxBus.get().post(BusAction.Main_Toeast, "已经创建过链接了");            isConnecting=false;            return true;        }        try {            AsyncServer.getDefault().connectSocket(new InetSocketAddress(HOST, PORT), new ConnectCallback() {                @Override                public void onConnectCompleted(Exception ex, final AsyncSocket socket) {                    isConnecting=false;                    handleConnectCompleted(ex, socket);                }            });        } catch (Error error) {            isConnecting=false;        }        return false;    }    public static void Stop() {        AsyncServer.getDefault().stop();    }}
原创粉丝点击