最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android實現(xiàn)TCP客戶端接收數(shù)據(jù)的方法

 更新時間:2016年04月08日 11:36:34   作者:EpicBlue  
這篇文章主要介紹了Android實現(xiàn)TCP客戶端接收數(shù)據(jù)的方法,較為詳細(xì)的分析了Android基于TCP實現(xiàn)客戶端接收數(shù)據(jù)的相關(guān)技巧與注意事項,需要的朋友可以參考下

本文實例講述了Android實現(xiàn)TCP客戶端接收數(shù)據(jù)的方法。分享給大家供大家參考,具體如下:

配合log4net使用,用來接收調(diào)試信息。因此,此客戶端只管通過TCP接收字符串?dāng)?shù)據(jù),然后顯示在界面上。

接收TCP數(shù)據(jù)

try {
  Socket s = new Socket("192.168.1.5", 8240);
  InputStream inputStream = s.getInputStream();
  DataInputStream input = new DataInputStream(inputStream);
  byte[] b = new byte[10000];
  while(true)
  {
    int length = input.read(b);
    String Msg = new String(b, 0, length, "gb2312");
    Log.v("data",Msg);
  }
}catch(Exception ex)
{
  ex.printStackTrace();
}

開線程執(zhí)行接收操作  

但是,如果接收代碼直接放UI按鈕處理事件中,將直接引發(fā)NetworkOnMainThreadException,這是因為不能在主線程中執(zhí)行Socket操作。這里使用AsyncTask開另一個線程執(zhí)行socket操作。

// Activity按鈕事件中
GetLogTask task = new GetLogTask();
task.execute(null);
// Activity類中嵌套類
public class GetLogTask extends AsyncTask<Void,Void,String>
{
  @Override
  protected String doInBackground(Void...param){
      try {
      Socket s = new Socket("192.168.1.5", 8240);
      InputStream inputStream = s.getInputStream();
      DataInputStream input = new DataInputStream(inputStream);
      byte[] b = new byte[10000];
      while(true)
      {
        int length = input.read(b);
        String Msg = new String(b, 0, length, "gb2312");
        Log.v("data",Msg);
      }
    }catch(Exception ex)
    {
      ex.printStackTrace();
    }
    return "";
  }
}

AsyncTask與界面線程通信

1、界面需要啟動和暫停TCP接收操作。
界面線程使用AsyncTask.cancel()通知接收線程結(jié)束接收操作。
接收線程在doInBackground中調(diào)用isCancelled()來檢查是否出現(xiàn)結(jié)束接收要求。

2、AsyncTask接收到數(shù)據(jù)之后,傳遞給界面顯示。

接收線程使用Handler將數(shù)據(jù)傳遞給界面
使用Handler的話,數(shù)據(jù)作為“消息”傳遞給界面處理。
Handler包括了處理消息功能和發(fā)布消息功能。在這里,處理消息就是在界面上顯示log文本,界面線程來干。發(fā)布消息就是將log文本作為參數(shù),調(diào)用postmessage功能,接收線程來干。

主線程中的處理消息

Handler handler = new Handler(){
  @Override
  public void handleMessage(Message msg){
    text.setText(text.getText().toString()+(String)msg.obj);
  }
};

接收線程中的發(fā)布消息

Message msg = new Message();
msg.obj = msgstring;
(MainActivity.this).handler.postMessage();

以上就構(gòu)成了一個簡單,但可用的TCP方式的log接收端。拿個360wifi或者小米wifi,就可以使用手機(jī)接收pc應(yīng)用程序發(fā)出來的log了。

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android通信方式總結(jié)》、《Android調(diào)試技巧與常見問題解決方法匯總》、《Android開發(fā)入門與進(jìn)階教程》、《Android多媒體操作技巧匯總(音頻,視頻,錄音等)》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)

希望本文所述對大家Android程序設(shè)計有所幫助。

相關(guān)文章

  • RecyclerView實現(xiàn)縱向和橫向滾動

    RecyclerView實現(xiàn)縱向和橫向滾動

    這篇文章主要為大家詳細(xì)介紹了RecyclerView實現(xiàn)縱向和橫向滾動,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Android使用ViewPager實現(xiàn)頂部tabbar切換界面

    Android使用ViewPager實現(xiàn)頂部tabbar切換界面

    這篇文章主要為大家詳細(xì)介紹了使用ViewPager實現(xiàn)頂部tabbar切換界面,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 分析Android中應(yīng)用的啟動流程

    分析Android中應(yīng)用的啟動流程

    不知道大家有沒有好奇過點擊Launcher圖標(biāo)時,到喚起一個應(yīng)用頁面,這個流程會是怎么樣的?那這篇文章的目的就是盡可能梳理清楚流程,能夠讓大家對整個流程有一個相對清晰的認(rèn)知。下面跟著小編一起學(xué)習(xí)學(xué)習(xí)。
    2016-08-08
  • Android利用SoundPool實現(xiàn)音樂池

    Android利用SoundPool實現(xiàn)音樂池

    這篇文章主要為大家詳細(xì)介紹了Android利用SoundPool實現(xiàn)音樂池,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Android學(xué)習(xí)教程之圓形Menu菜單制作方法(1)

    Android學(xué)習(xí)教程之圓形Menu菜單制作方法(1)

    這篇文章主要為大家詳細(xì)介紹了Android學(xué)習(xí)教程之圓形Menu菜單操作代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Android在類微信程序中實現(xiàn)藍(lán)牙聊天功能的示例代碼

    Android在類微信程序中實現(xiàn)藍(lán)牙聊天功能的示例代碼

    這篇文章主要介紹了Android在類微信程序中實現(xiàn)藍(lán)牙聊天功能,本文通過實例代碼給大家介紹的非常想詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • Android實現(xiàn)簡單的下拉阻尼效應(yīng)示例代碼

    Android實現(xiàn)簡單的下拉阻尼效應(yīng)示例代碼

    下面小編就為大家分享一篇Android實現(xiàn)簡單的下拉阻尼效應(yīng)示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • Android 日期選擇器實例代碼

    Android 日期選擇器實例代碼

    這篇文章主要介紹了Android 日期選擇器實例代碼,需要的朋友可以參考下
    2017-05-05
  • Android集成新浪微博第三方登錄的方法

    Android集成新浪微博第三方登錄的方法

    這篇文章主要介紹了Android集成新浪微博第三方登錄的方法,完整講述了Android集成新浪微博第三方登錄的詳細(xì)步驟與實現(xiàn)技巧,需要的朋友可以參考下
    2015-01-01
  • Android應(yīng)用程序四大組件之使用AIDL如何實現(xiàn)跨進(jìn)程調(diào)用Service

    Android應(yīng)用程序四大組件之使用AIDL如何實現(xiàn)跨進(jìn)程調(diào)用Service

    Android應(yīng)用程序的四大組件中Activity、BroadcastReceiver、ContentProvider、Service都可以進(jìn)行跨進(jìn)程,Android系統(tǒng)采用了遠(yuǎn)程過程調(diào)用(RPC)方式來實現(xiàn)跨進(jìn)程調(diào)用服務(wù)(Service),對于Service的跨進(jìn)程調(diào)用需要通過AIDL來實現(xiàn),關(guān)于如何實現(xiàn)aidl service請看本文介紹
    2015-10-10

最新評論

囊谦县| 景东| 大余县| 本溪市| 马关县| 拜泉县| 梁河县| 盐边县| 华阴市| 邓州市| 泗洪县| 昆明市| 偃师市| 独山县| 广丰县| 信丰县| 闵行区| 舞阳县| 吴桥县| 信丰县| 隆回县| 汉中市| 揭阳市| 瑞安市| 衡阳县| 清水河县| 富宁县| 霍邱县| 连州市| 淮北市| 淳安县| 娄烦县| 大荔县| 龙山县| 青浦区| 丹江口市| 昌宁县| 班玛县| 金平| 惠水县| 麦盖提县|