WebSocketClient封装

public class SockClient extends WebSocketClient {    //设置一个接口 提供外部数据 类似handle功能    private SockClient.OnOkButtonFireListener okListener;    public interface OnOkButtonFireListener{        public void onOpen();        public void onMessage(String resultStr);    }    public void setOkListener(SockClient.OnOkButtonFireListener okListener) {        this.okListener = okListener;    }    public SockClient(String url,Map var3) {        //1请求地址, 2版本号需和服务端一直, 3上传参数, 4请求超时时间        super(URI.create(url), new Draft_17(), var3, 120000);    }    //添加安全协议    public void SetAgreement(){        try {            SSLContext sc = SSLContext.getInstance("TLS");            sc.init(null, null, null);            SSLSocketFactory factory = sc.getSocketFactory();            this.setSocket(factory.createSocket());        } catch (Exception e) {            e.printStackTrace();        }    }    //连接服务器    public void connect(){        try {            this.connectBlocking();        } catch (InterruptedException e) {            e.printStackTrace();        }    }    @Override    public void onOpen(ServerHandshake serverHandshake) {        System.out.println("握手成功");        okListener.onOpen();    }    @Override    public void onMessage(String s) {        System.out.println("返回消息");        //次位置可以对返回的s 数据进行处理使外面的数据可以更便捷使用 根据需求而定        okListener.onMessage(s);    }    @Override    public void onClose(int i, String s, boolean b) {        System.out.println("关闭连接");    }    @Override    public void onError(Exception e) {        System.out.println("连接失败:"+e.getMessage());    }}

 WebSocketClient调用方法

 public static void main(String[] args) {        String url = "http://localhost:8080/socket";        Map headerMap = new HashMap();        headerMap.put("token", "upload-parameters");        final SockClient socket = new SockClient(url,headerMap);        socket.setOkListener(new SockClient.OnOkButtonFireListener() {            @Override            public void onOpen() {                //握手成功后发送一条指令 根据需求而定                socket.send("information");            }            @Override            public void onMessage(String resultStr) {                System.out.println("消息:"+resultStr);            }        });        socket.SetAgreement();        socket.connect();    }

TCP协议Socket方法封装

public class SocketCon {    //设置一个接口 提供外部数据 类似handle功能    private SocketCon.OnOkButtonFireListener okListener;    public interface OnOkButtonFireListener{        public void onMessage(String resultStr);    }    public void setOkListener(SocketCon.OnOkButtonFireListener okListener) {        this.okListener = okListener;    }    private BufferedReader br;    private BufferedWriter bw;    private InputStream in;    private OutputStream out;    private Socket socket = null;    private SocketSender sender;    private SocketReceiver receiver;    public SocketCon(){        try {            socket = new Socket("ip地址", 8080);            socket.setSoTimeout(1000);            in = socket.getInputStream();            out = socket.getOutputStream();            br = new BufferedReader(new InputStreamReader(in, "UTF-8"));            bw = new BufferedWriter(new OutputStreamWriter(out, "UTF-8"));            //接收数据开启一个线程            receiver = new SocketReceiver();            //发送数据开启一个线程            sender = new SocketSender();        }catch (Exception e){            e.getMessage();        }    }    //判断是否连接成功    public boolean isConnected(){        return socket.isConnected();    }    //发送消息    public void sendMag(String mag){        if(null!=sender && null!=mag){            sender.sendStr = mag;        }    }    public class SocketSender implements Runnable {        private boolean alive;        public Thread thread;        public boolean ThreadStop;        public String sendStr = "";        public SocketSender() {            ThreadStop=false;            alive = true;            sendStr = "";            thread = new Thread(this);            thread.start();        }        public void run() {            while (alive) {                if(ThreadStop){                    break;                }                try {                    if (null!=sendStr && !"".equals(sendStr)) {                        bw.write(sendStr, 0, sendStr.length());                        bw.flush();                        sendStr = "";                    }                    synchronized (this) {                        wait(100);                    }                    Thread.yield();                } catch (Exception e) {                    e.printStackTrace();                    close();                }            }        }        public void free() {            alive = false;            ThreadStop=true;        }    }    public class SocketReceiver implements Runnable {        public boolean alive;        public Thread thread;        public boolean ThreadStop;        public SocketReceiver() {            alive = true;            ThreadStop= false;            thread = new Thread(this);            thread.start();        }        public void run() {            while (alive) {                try {                    if(ThreadStop){                        break;                    }                    String text=br.readLine();                    if(text!=null){                        okListener.onMessage(text);                    }                    synchronized (this) {                        wait(100);                    }                    Thread.yield();                } catch (Exception e) {                    e.printStackTrace();                }            }        }        public void free() {            alive = false;            ThreadStop= true;        }    }    public void close() {        try {            if (socket != null) {                socket.close();                socket = null;            }            if (sender != null) {                sender.free();                sender = null;            }            if (receiver != null) {                receiver.free();                receiver = null;            }            in = null;            out = null;            br = null;            bw = null;        } catch (Exception e) {            e.printStackTrace();        }    }}

 方法调用

public static void main(String[] args) {        SocketCon scket = new SocketCon();        scket.setOkListener(new SocketCon.OnOkButtonFireListener() {            @Override            public void onMessage(String resultStr) {                System.out.println("接收到消息:"+resultStr)            }        });        //发送消息        //scket.sendMag("消息");        //关闭连接        //scket.close();    }

 

更多相关文章

  1. Android api 数据的保存方式
  2. 【Java转Android】30. LitePal操作SQLite数据库
  3. Android SQLite数据库相关操作
  4. Android调用系统的发邮件方法
  5. android 自带的contacts2.db数据库表结构脚本
  6. android 两个apk之间恭喜数据SharedPreferences
  7. Android轮播图Banner使用方法
  8. Android Sqlite数据库中判断某个表是否存在的SQL语句
  9. Android JSON数据的解析与封装小Demo

随机推荐

  1. Android的定位策略
  2. cocos2d-x打开网页android与ios平台
  3. android2.1获得联系人信息+Android 获取
  4. android sdk content loader 加载很慢的
  5. Android 日历控件WeekCalendar
  6. android设置eclipse中的自动提示功能
  7. Android防微信表情功能
  8. android截图事件监听
  9. Android:QQ分享、微信分享、朋友圈分享(不
  10. 利用HTML5开发Android APP