国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

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

2019-10-22 18:18:56
字體:
供稿:網(wǎng)友

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

手機(jī)本身是作為手機(jī)終端使用的,因此它的計(jì)算能力,存儲能力都是有限的。它的主要優(yōu)勢是攜帶方便,可以隨時打開,而且手機(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的連接,返回一個讀取該資源的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ù)器端的時間"+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ù)器端得到時間~

效果圖如下:

網(wǎng)絡(luò)編程,URL,TCP,Android

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

 

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


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 满城县| 雷波县| 浦东新区| 西乌| 依兰县| 吉木萨尔县| 台南县| 白河县| 枣强县| 沁水县| 抚松县| 扬州市| 九龙坡区| 田林县| 柳州市| 阳朔县| 温州市| 云和县| 惠来县| 青铜峡市| 科技| 哈尔滨市| 盈江县| 桦南县| 垫江县| 鄯善县| 汶川县| 临桂县| 宜春市| 乐安县| 沁源县| 临潭县| 塔城市| 荥经县| 临沂市| 红原县| 来宾市| 孟村| 普洱| 百色市| 灵宝市|