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

Android基于TCP和URL協(xié)議的網(wǎng)絡(luò)編程示例【附demo源碼下載】

 更新時(shí)間:2018年01月23日 11:35:04   作者:飄走的我  
這篇文章主要介紹了Android基于TCP和URL協(xié)議的網(wǎng)絡(luò)編程,結(jié)合實(shí)例形式分析了Android網(wǎng)絡(luò)編程的通信原理、實(shí)現(xiàn)步驟與相關(guān)操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下

本文實(shí)例講述了Android基于TCP和URL協(xié)議的網(wǎng)絡(luò)編程。分享給大家供大家參考,具體如下:

手機(jī)本身是作為手機(jī)終端使用的,因此它的計(jì)算能力,存儲能力都是有限的。它的主要優(yōu)勢是攜帶方便,可以隨時(shí)打開,而且手機(jī)通??偸翘幱诼?lián)網(wǎng)狀態(tài)。因此網(wǎng)絡(luò)支持對于手機(jī)應(yīng)用非常重要。

Android完全支持JDK本身的TCP,UDP網(wǎng)絡(luò)通信API,也可以使用ServerSocket,Socket來建立基于TCP/IP協(xié)議的網(wǎng)絡(luò)通信,也可以使用DatagramSocket,Datagrampacket來建立基于UDP協(xié)議的網(wǎng)絡(luò)通信。Android也支持JDK提供的URL,URLConnection等網(wǎng)絡(luò)通信API。Android還內(nèi)置了HttpClient,和HttpUrlConnection這樣可以非常方便地發(fā)送HTTP請求,并獲取Http響應(yīng)。

——基于TCP協(xié)議的編程

使用Socket,ServerSocket編程:

使用多線程,handler機(jī)制完成網(wǎng)絡(luò)編程.

注意:由于手機(jī)無線上網(wǎng)的IP地址通常都是由移動運(yùn)營公司動態(tài)分配的,一般不會有自己固定的IP地址,因此很少在手機(jī)上運(yùn)行服務(wù)器端,服務(wù)器端通常運(yùn)行在有固定IP的服務(wù)器上。

——訪問網(wǎng)絡(luò)資源必須放在子線程中
——需要添加訪問網(wǎng)絡(luò)的權(quán)限
——IP地址,不能寫成127.0.0.1.
——使用Handler機(jī)制解析返回的數(shù)據(jù)
——注意解決亂碼問題

——使用URL進(jìn)行網(wǎng)絡(luò)編程

——使用URL訪問網(wǎng)絡(luò)資源

URL對象代表統(tǒng)一資源定位符。它是指向互聯(lián)網(wǎng)中的資源。該資源可以使簡單的文件或目錄。也可以是對更復(fù)雜的對象的引用。

URL的格式:protocol://host:port/resourceName

可以使用構(gòu)造器創(chuàng)建URL對象,一旦獲得URL對象,可以調(diào)用如下的方法訪問該URL對應(yīng)的資源:

String getFile():獲取URL的資源名
String getHost():獲取URL的主機(jī)名
String getPath():獲取URL的路徑部分
int getPort():獲取URL的端口號
String getProtocol():獲取URL的協(xié)議名稱
String getQuery():獲取URL的查詢字符串部分
InputStream url.openStream():打開URL的連接,返回一個(gè)讀取該資源的InputStream。

代碼編寫:

1.服務(wù)器的編寫:

使用Socket和ServerSocket:

public class serverTest {
 public static void main(String[] args) {
  try {
    ServerSocket serverSocket=new ServerSocket(7777);
    System.out.println("服務(wù)器已經(jīng)在7777端口上啟動了");
    while (true) {
      //有阻塞的功能,拿不到socket下面的方法也不會執(zhí)行
      Socket socket=serverSocket.accept();
      System.out.println("有客戶端發(fā)出請求了");
      new ServerThread(socket).start();
    }
  } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
  }
 }
}

ServerThread繼承Thread:

public class ServerThread extends Thread{
  private Socket socket;
  OutputStream outputStream;
  public ServerThread(Socket socket) {
    this.socket=socket;
  }
  @Override
  public void run() {
    // TODO Auto-generated method stub
    try {
      outputStream=socket.getOutputStream();
      outputStream.write(("服務(wù)器端的時(shí)間"+new Date()).getBytes("UTF-8"));
      outputStream.flush();
      outputStream.close();
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    super.run();
  }
}

2.客戶端的編寫:

關(guān)鍵代碼:

public void click(View view){
  new Thread(){
    public void run() {
      try {
        //客戶端從服務(wù)端獲取數(shù)據(jù)
        Socket client=new Socket("169.254.244.141", 7777);
        BufferedReader bufferedReader=
            new BufferedReader
            (new InputStreamReader
                (client.getInputStream()));
        String text=bufferedReader.readLine();
        //tv.setText(text);
        //線程復(fù)用
        Message msg= Message.obtain();
        msg.what=0x123;
        msg.obj=text;
        handler.sendMessage(msg);
      } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    };
  }.start();
}

從服務(wù)器端得到時(shí)間~

效果圖如下:

附:完整實(shí)例代碼點(diǎn)擊此處本站下載。

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

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

相關(guān)文章

  • 詳解在Python中創(chuàng)建條形圖追趕動畫

    詳解在Python中創(chuàng)建條形圖追趕動畫

    動畫是使可視化更具吸引力和用戶吸引力的好方法。它幫助我們以有意義的方式展示數(shù)據(jù)可視化。Matplotlib是一個(gè)非常流行的數(shù)據(jù)可視化庫,通常用于數(shù)據(jù)的圖形表示以及使用內(nèi)置函數(shù)的動畫。本文將用Matplotlib繪制條形圖追趕動畫,需要的可以參考一下
    2022-03-03
  • python腳本之如何按照清晰度對圖片進(jìn)行分類

    python腳本之如何按照清晰度對圖片進(jìn)行分類

    這篇文章主要介紹了python腳本之如何按照清晰度對圖片進(jìn)行分類問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Python字符串逆序的實(shí)現(xiàn)方法【一題多解】

    Python字符串逆序的實(shí)現(xiàn)方法【一題多解】

    今天小編就為大家分享一篇關(guān)于Python字符串逆序的實(shí)現(xiàn)方法【一題多解】,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • Pandas執(zhí)行SQL操作的實(shí)現(xiàn)

    Pandas執(zhí)行SQL操作的實(shí)現(xiàn)

    使用SQL語句能夠完成對table的增刪改查操作,Pandas同樣也可以實(shí)現(xiàn)SQL語句的基本功能,本文就來介紹一下,具有一檔的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • Python中FTP服務(wù)與SSH登錄暴力破解的實(shí)現(xiàn)

    Python中FTP服務(wù)與SSH登錄暴力破解的實(shí)現(xiàn)

    本文學(xué)習(xí)了如何通過 Python 腳本進(jìn)行 FTP、SSH 服務(wù)的登錄爆破,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Python中的Django基本命令實(shí)例詳解

    Python中的Django基本命令實(shí)例詳解

    這篇文章主要介紹了Python之Django基本命令 ,需要的朋友可以參考下
    2018-07-07
  • Python中的datetime包與time包包和模塊詳情

    Python中的datetime包與time包包和模塊詳情

    這篇文章主要介紹了Python中的datetime包與datetime包和模塊詳情,文章圍繞主題展開詳細(xì)內(nèi)容,具有一的的參考價(jià)值,需要的小伙伴可以參考一下,希望對你有所幫助
    2022-02-02
  • Python自動修改電腦靜態(tài)IP地址的實(shí)現(xiàn)示例

    Python自動修改電腦靜態(tài)IP地址的實(shí)現(xiàn)示例

    通過Python自動修改電腦的靜態(tài)IP地址可以極大地提高我們的工作效率,減少手動修改IP地址帶來的錯(cuò)誤,本文就來介紹一下Python自動修改電腦靜態(tài)IP地址的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2023-11-11
  • python輾轉(zhuǎn)相除法求最大公約數(shù)和最小公倍數(shù)的實(shí)現(xiàn)

    python輾轉(zhuǎn)相除法求最大公約數(shù)和最小公倍數(shù)的實(shí)現(xiàn)

    這篇文章主要介紹了python輾轉(zhuǎn)相除法求最大公約數(shù)和最小公倍數(shù)的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Python之用戶輸入的實(shí)例

    Python之用戶輸入的實(shí)例

    今天小編就為大家分享一篇Python之用戶輸入的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06

最新評論

禄劝| 隆安县| 长泰县| 禄丰县| 福州市| 聊城市| 石泉县| 宜兴市| 滁州市| 秭归县| 桑植县| 万宁市| 安阳市| 灌阳县| 松滋市| 胶南市| 逊克县| 长治市| 轮台县| 德昌县| 老河口市| 株洲市| 梁河县| 佛山市| 焦作市| 乌兰县| 涟源市| 浙江省| 松滋市| 噶尔县| 兖州市| 清苑县| 罗定市| 平安县| 泰宁县| 蕲春县| 永州市| 白朗县| 新营市| 明水县| 南昌市|