Android網絡通信基礎(Socket和HTTP)

應用軟件的網絡通訊無非就是Socket和HTTP,其中Socket又能夠用TCP和UDP,HTTP的話就衍生出不少方式,基礎的HTTP GET和POST請求,而後就是WebService的SOAP。android

在這些方式中,Socket固然是最基礎的。所以先從Socket開始。c#

服務端就不須要過多的說明了,不管採用什麼語言什麼平臺均可以,只要遵循基本的Socket監聽模式就行。服務器

首先是說說TCP開發網絡

JAVA裏的TCP開發感受比C#裏簡單多了,實現方法幾句話就能完成。socket

Socket socket = new Socket("192.168.3.119",7628);//建立Socket實例,並綁定鏈接遠端IP地址和端口
   
    OutputStream ops = socket.getOutputStream();//定義一個輸出流,來自於Socket輸出流
      
    byte[] bytes = b.getBytes();
           
    ops.write(bytes);//向輸出流中寫入數據
    
    ops.flush();//刷行輸出流

    //至此,在鏈接成功的狀況下,服務端應該就能收到發送過去的流了。
    

    //接下來是接收服務器發送過來的數據
    InputStream ips = socket.getInputStream();//定義輸入流,來自於socket的輸入流
    
    byte[] bytes2 = new byte[20];
    
    ips.read(bytes2);//讀取輸入流數據
      
    String str = new String(bytes2);//轉換成字符串

    btn.setText(str);//顯示出來(我是現實在button上,固然,這個方法不正規,不過可讓我少放點空間,看上去界面乾淨點,只要能看到效果就行)
    
    socket.close();

 

服務端代碼就很少說明了,只要實現了Socket監聽和接收,發送就行。這樣Android上Tcp的Socket就完成了,很簡單。調試

2.接下來是UDP的,理論上來講,UDP的實現應該更簡單,不過,因爲使用模擬器來調試的關係,出了一點小問題,鬱悶了好久,另外,Java用UDP Socket對應使用的類是DatagramSocket,與C#不一樣,c#是在建立Socket的時候制定參數來制定協議類型,先看代碼。ip

DatagramSocket dgs = new DatagramSocket();//創建一個Socket,這個Socket將做爲一個發送器,將Socket包發送出去
    
InetAddress inet = InetAddress.getByName("192.168.3.119");//建立一個InetAddress,ip地址爲要發動到的遠端的服務器IP
    
DatagramPacket dgp = new DatagramPacket("test2".getBytes(), "test2".getBytes().length,inet,7628);//建立一個UDP數據包,數據包包含遠端的IP地址及端口
    
dgs.send(dgp);//發送    
   
dgs.close();
    
    
DatagramSocket dgs2 = new DatagramSocket(9997);//建立另外一個UDPSocket,
    
DatagramPacket dgp2 = new DatagramPacket(new byte[20],20); //建立一個空報文包
dgs2.receive(dgp2);//接收數據並填充到報文包中
    
String str = new String(dgp2.getData());//獲取報文包裏的數據並轉換成字符串
    
btn.setText(str);//顯示得到的數據
    
dgs2.close();//關閉Socket
配置訪問權限:
<uses-permission android:name="android.permission.INTERNET" />
相關文章
相關標籤/搜索