美文网首页程序员
Socket在与安卓交互

Socket在与安卓交互

作者: 阿里高级软件架构师 | 来源:发表于2018-04-21 12:33 被阅读0次

    如果我们想在安卓端进行socket开发,那你就必须看我上一篇socket介绍

    现在我们来开发:

    第一步:添加权限

    <android permission :android:name="android.permission.INTERNET"/> 

    第二部步:代码分析

    开发思路:

          socket通信毕竟是网络通信,所以一定 是耗时操作,因此我们要开线程,我们可以自己写一个类继承Tread这个类,添加这个构造方法,传入参数,因为我们是向服务器发送消息嘛,把参数传入进来,我们通过对这个参数进行编程就可以了

    我们要用到 的主要的类是Socket,我们先在activity里面声明初始化,然后在MyThread里面new出来,传入InetSocketAddress()对象,里面填入的参数有通信 的ip地址和超时时间,然后通过socket进行流操作

    OutputStream ou = socket.getOutputStream();                 

     BufferedReader bff = new BufferedReader(new InputStreamReader(socket.getInputStream()));  

    后面的都很简单,就不介绍了=.=

    class MyThread extends Thread {  

         public String txt1;      

          public MyThread(String str) {        

          txt1 = str;         

     }            

    @Override         

     public void run() {            

      //定义消息            

      Message msg = new Message();            

      msg.what = 0x11;              

    Bundle bundle = new Bundle();             

     bundle.clear();             

     try {      

     //连接服务器 并设置连接超时为5秒                 

     socket = new Socket();                  

    socket.connect(new InetSocketAddress("1.1.9.30", 30000), 5000);                  

    //获取输入输出流                  

    OutputStream ou = socket.getOutputStream();                 

     BufferedReader bff = new BufferedReader(new InputStreamReader(socket.getInputStream()));                  //读取发来服务器信息                

      String line = null;                 

     buffer="";                 

     while ((line = bff.readLine()) != null) {                      

    buffer = line + buffer;               

       }                                  

      //向服务器发送信息                  

    ou.write("android 客户端".getBytes("gbk"));                

     ou.flush();               

       bundle.putString("msg", buffer.toString());                  

    msg.setData(bundle);                  //发送消息 修改UI线程中的组件                

      myHandler.sendMessage(msg);                  //关闭各种输入输出流                 

     bff.close();                  

    ou.close();                 

     socket.close();             

     } catch (SocketTimeoutException aa) {                  //连接超时 在UI界面显示消息                 

     bundle.putString("msg", "服务器连接失败!请检查网络是否打开");                 

     msg.setData(bundle);                  //发送消息 修改UI线程中的组件                  

    myHandler.sendMessage(msg);             

     } catch (IOException e) {                

      e.printStackTrace();           

       }         

     }    

      }  

    相关文章

      网友评论

        本文标题:Socket在与安卓交互

        本文链接:https://www.haomeiwen.com/subject/bzqxlftx.html