android使用socket.io实现聊天,数据传递,破解

android使用socket.io实现聊天,数据传递,破解

Socket.IO-client使用这个库可以方便的实现socket.io的各项功能。

在android studio中 使用

compile 'com.github.nkzawa:socket.io-client:0.5.2'

就可以把项目库加载进来,我这边主要是为了实现和nodejs的服务器做一个解码的交互。nodejs来抓取数据但是需要一个本地解码库,通过java来调用so,再把数据传输回去,实现数据破解。

package com.eunke.burro_cargo;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;

import com.eunke.burroframework.utils.CryptUtils;
import com.github.nkzawa.emitter.Emitter;
import com.github.nkzawa.socketio.client.IO;
import com.github.nkzawa.socketio.client.Socket;

/**
 * Created by dotcoolgirl on 15/7/30.
 */
public class BackgroundService extends Service{
    private final String TAG="BackgroundService";
    private CryptUtils cryptUtils;
    private String headerString;
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        cryptUtils = new CryptUtils(this);
        startSocketClient();
    }
        private void startSocketClient() {
            LogUtils.e(TAG,"startSocketClient");
            IO.Options opts = new IO.Options();
            opts.forceNew = true;
            opts.reconnection = true;
            opts.port = 3000;
            try {
                final Socket socket = IO.socket("http://www.****.com:3000/",opts);

                LogUtils.e(TAG,"Socket");
                socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {

                    @Override
                    public void call(Object... args) {
                        LogUtils.e(TAG,"EVENT_CONNECT");

                    }

                }).on("key", new Emitter.Listener() {

                    @Override
                    public void call(Object... args) {
                        LogUtils.e(TAG, "event");
                        headerString = (String)args[0];
                        socket.emit("key","success");
                    }

                }).on("decode", new Emitter.Listener() {

                    @Override
                    public void call(Object... args) {
                        LogUtils.e(TAG, "event");
                        byte[] data = (byte[]) args[0];
                        byte[] output = cryptUtils.getString(headerString,data);
                        if(output!=null) {
                            LogUtils.e(TAG,"解码成功");
                            socket.emit("decode", output);
                        }else{
                            LogUtils.e(TAG,"解码失败");
                            socket.emit("retry");
                        }
                    }

                }).on(Socket.EVENT_CONNECT_TIMEOUT,new Emitter.Listener(){
                    @Override
                    public void call(Object... args){
                        LogUtils.e(TAG,"EVENT_CONNECT_TIMEOUT");
                    }
                }).on(Socket.EVENT_CONNECT_ERROR,new Emitter.Listener(){
                    @Override
                    public void call(Object... args){
                        LogUtils.e(TAG,"EVENT_CONNECT_ERROR:");
                    }
                }).on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {

                    @Override
                    public void call(Object... args) {
                        LogUtils.e(TAG, "EVENT_DISCONNECT");
                    }

                });
                socket.connect();
            }catch (Exception e){
                e.printStackTrace();
                LogUtils.e(TAG,"发生错误");
            }
    }
}

  • 发表于 2019-08-10 23:11
  • 阅读 ( 313 )
  • 分类:软件开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
不写代码的码农
admin

9 篇文章

作家榜 »

  1. admin 9 文章