Android基于TCP和URL協(xié)議的網(wǎng)絡編程示例【附demo源碼下載】
本文實例講述了Android基于TCP和URL協(xié)議的網(wǎng)絡編程。分享給大家供大家參考,具體如下:
手機本身是作為手機終端使用的,因此它的計算能力,存儲能力都是有限的。它的主要優(yōu)勢是攜帶方便,可以隨時打開,而且手機通??偸翘幱诼?lián)網(wǎng)狀態(tài)。因此網(wǎng)絡支持對于手機應用非常重要。
Android完全支持JDK本身的TCP,UDP網(wǎng)絡通信API,也可以使用ServerSocket,Socket來建立基于TCP/IP協(xié)議的網(wǎng)絡通信,也可以使用DatagramSocket,Datagrampacket來建立基于UDP協(xié)議的網(wǎng)絡通信。Android也支持JDK提供的URL,URLConnection等網(wǎng)絡通信API。Android還內(nèi)置了HttpClient,和HttpUrlConnection這樣可以非常方便地發(fā)送HTTP請求,并獲取Http響應。
——基于TCP協(xié)議的編程
使用Socket,ServerSocket編程:
使用多線程,handler機制完成網(wǎng)絡編程.
注意:由于手機無線上網(wǎng)的IP地址通常都是由移動運營公司動態(tài)分配的,一般不會有自己固定的IP地址,因此很少在手機上運行服務器端,服務器端通常運行在有固定IP的服務器上。
——訪問網(wǎng)絡資源必須放在子線程中
——需要添加訪問網(wǎng)絡的權限
——IP地址,不能寫成127.0.0.1.
——使用Handler機制解析返回的數(shù)據(jù)
——注意解決亂碼問題
——使用URL進行網(wǎng)絡編程
——使用URL訪問網(wǎng)絡資源
URL對象代表統(tǒng)一資源定位符。它是指向互聯(lián)網(wǎng)中的資源。該資源可以使簡單的文件或目錄。也可以是對更復雜的對象的引用。
URL的格式:protocol://host:port/resourceName
可以使用構造器創(chuàng)建URL對象,一旦獲得URL對象,可以調(diào)用如下的方法訪問該URL對應的資源:
String getFile():獲取URL的資源名
String getHost():獲取URL的主機名
String getPath():獲取URL的路徑部分
int getPort():獲取URL的端口號
String getProtocol():獲取URL的協(xié)議名稱
String getQuery():獲取URL的查詢字符串部分
InputStream url.openStream():打開URL的連接,返回一個讀取該資源的InputStream。
代碼編寫:
1.服務器的編寫:
使用Socket和ServerSocket:
public class serverTest {
public static void main(String[] args) {
try {
ServerSocket serverSocket=new ServerSocket(7777);
System.out.println("服務器已經(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(("服務器端的時間"+new Date()).getBytes("UTF-8"));
outputStream.flush();
outputStream.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
super.run();
}
}
2.客戶端的編寫:
關鍵代碼:
public void click(View view){
new Thread(){
public void run() {
try {
//客戶端從服務端獲取數(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);
//線程復用
Message msg= Message.obtain();
msg.what=0x123;
msg.obj=text;
handler.sendMessage(msg);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}.start();
}
從服務器端得到時間~
效果圖如下:

附:完整實例代碼點擊此處本站下載。
更多關于Android相關內(nèi)容感興趣的讀者可查看本站專題:《Android通信方式總結》、《Android開發(fā)入門與進階教程》、《Android調(diào)試技巧與常見問題解決方法匯總》、《Android多媒體操作技巧匯總(音頻,視頻,錄音等)》、《Android基本組件用法總結》、《Android視圖View技巧總結》、《Android布局layout技巧總結》及《Android控件用法總結》
希望本文所述對大家Android程序設計有所幫助。
- android 網(wǎng)絡編程之網(wǎng)絡通信幾種方式實例分享
- Android網(wǎng)絡編程之獲取網(wǎng)絡上的Json數(shù)據(jù)實例
- Android中Retrofit+OkHttp進行HTTP網(wǎng)絡編程的使用指南
- Android網(wǎng)絡編程之UDP通信模型實例
- android網(wǎng)絡編程之a(chǎn)ndroid連接網(wǎng)絡的簡單示例代碼
- Android通過HttpURLConnection和HttpClient接口實現(xiàn)網(wǎng)絡編程
- Android網(wǎng)絡編程之簡易新聞客戶端
- Android中實現(xiàn)TCP和UDP傳輸實例
- Android使用socket創(chuàng)建簡單TCP連接的方法
- Android調(diào)用默認瀏覽器打開指定Url的方法實例
相關文章
python連接clickhouse數(shù)據(jù)庫的兩種方式小結
這篇文章主要介紹了python連接clickhouse數(shù)據(jù)庫的兩種方式小結,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05
淺談Keras中shuffle和validation_split的順序
這篇文章主要介紹了淺談Keras中shuffle和validation_split的順序,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06

