成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android開發Socket編程

移動開發 Android
在Android的網絡通訊中,通常會使用Socket進行設備間數的數據通訊,使用Http來對網絡數據進行請求。可以說Android如果不進行與網絡資源進行交互的話,它就和我們當初的普通系統沒有任何區別了,所以網絡編程對Android開發來說有非常特殊的意義。

一.Socket簡介

1.所謂Socket通常也稱作“套接字”,用于描述IP地址和端口,是一個通信鏈的句柄
2.應用程序通常通過“套接字”向網絡發送請求或者應答網絡請求
3.Socket有兩種主要的操作方式:面向連接(TCP)的和無連接的(UDP)。
4.Java.net中提供了兩個類Socket和ServerSocket,分別用來表示雙向連接的客戶端和服務端。
一個客戶端要發起一次通信,首先必須知道運行服務器端的主機IP地址。然后由網絡基礎設施利用目標地址,將客戶端發送的信息傳遞到正確的主機上,在 Java中,地址可以由一個字符; 串來定 義,這個字符串可以使數字型的地址(比如192.168.1.1),也可以是主機名(example.com)。在 Java中InetAddress類代表了一個網絡目標地址,包括主機名和數字類型的地址信息。

二.使用基于TCP協議的Socket

1.ServerSocket:
ServerSocket:這個類是實現了一個服務器端的Socket,利用這個類可以監聽來自網絡的請求。
(a)創建ServerSocket的方法:
ServerSocket(IntlocalPort)
ServerSocket(int localport,intqueueLimit)
ServerSocket(int localport,intqueueLimit,InetAddress localAddr)
創建一個ServerSocket必須指定一個端口,以便客戶端能夠向該端口號發送連接請求。端口的有效范圍是0-65535(0-1023是系統預留的,最好大于1024)
0~1023的端口號為系統所保留,例如http服務的端口號是80,telnet服務的端口號為21,ftp為23。所以我們在選擇端口號時最好選擇大 于1023的數,防止發生沖突。在創建 Socket時,如果發生錯誤,將產生IOException,在程序中必須對其進行處理。所以在創建Socket 或ServerSocket時必須捕獲或拋出異常。
    (b)ServerSocket操作
        (1)Socketaccept()
                       accept()方法為下一個傳入的連接請求創建Socket實例,并將已成功連接的Socket實例返回給服務器套接字,如果沒有連接請求,accept()方法將阻塞等待;
        (2)void close
                       close方法用于關閉套接字

2.Socket
   (a)創建Socket的方法:
        Socket(InetAddress remoteAddress,intremotePort)
        利用Socket構造函數,可創建一個TCP套接字后,先連接到指定的遠程地址和端口號。
        Socket(InetAddress address,int port ,InetAddress localAddr ,intlocalPort)
        Socket(InetAddress address, int port ,booleanstream)
        Socket(SocketImpl impl)
        address、host、port分別表示雙向連接中另一方的IP地址、主機名、端口號
        stream指明Socket是流Socket還是數據報Socket
        localAddr,bindAddr是本地機器的地址(ServerSocket的主機地址)
        impl是Socket的父類,既可以創建ServerSocket,也可創建Socket
  (b)操作Socket的方法
         通信過程中順序:服務器端首先得到輸入流,然后將輸入流信息輸出到其各個客戶端
         Socket提供了getInputStream()和getOutputStream()方法來得到輸入輸出流。然后再對輸入流輸出流進行讀寫操作,例 如,對于服務器端,得到Socket對象后,調用getInputStream方法即  可得到來自客戶端的流,調用getOutStream方法可得到向客 戶端發送數據的流。對于客戶端,調用getInputStream方法即可得到來自服務器的流,調用getOutStream方法可得到向服務器端發送  數 據的流。
         InputStreamgetInputStream()
         OutputStreamgetOutputStream()
         可調用Socket的close()方法進行關閉,在關閉前,應將與Socket相關的所有輸入輸出流關閉,正著打開,倒著關閉。

3.編程步驟:
       創建服務器的步驟:
       指定端口實例化一個ServerSocket調用ServerSocket的accept方法以在等待連接期間造成阻塞獲取位于該底層Socket的流以進行讀寫操作將數據封裝成流對Socket進行讀寫關閉打開的流
       創建客戶端的步驟:
       通過IP地址和端口實例化Socket,請求連接服務器獲取Socket上的流以進行讀寫把流包裝進BufferedReader/PrintWriter的實例對Socket進行讀寫關閉打開的流

       當要監控多個客戶端時,可使用類ExecutorService
       其對象獲取方法:Executors.newCachedThreadPool();
       調用該對象的execute(Runnablecommand)即可,在未來某個時間執行給定的命令。該命令可能在新的線程、已入池的線程或者正調用的線程中執行,這由Executor實現決定

三.使用基于UDP的Socket

  (a)創建DatagramSocket
               DatagramSocket(byte [] data,intoffset,int length,InetAddress remoteAddr,intremotePort)
               該構造函數創建一個數據報文對象,數據包含在第一個參數data當中
               Offset是指偏移量長度,length是指數據包長度。
       (b)創建DatagramSocket
               DatagramSocket(intlocalPort)
               以上構造函數將創建一個UDP套接字;
       (c)DatagramSocket:發送和接受
               void send(DatagramPacketpacket)
               void receive(DatagramPacketpacket)
               send()方法用來發送DatagramPacket實例。一旦創建連接,數據報將發送到該套接字所連接的地址;
               receive()方法將阻塞等待,知道接收到數據報文,并將報文中的數據復制到指定的DatagramPacket實例中。

補充:

           對AndroidManifest.xml的配置一定不要忘了:
           <uses-permissionandroid:name="android.permission.INTERNET"/>

            輸入和輸出流要用DataOutputStream和DataOutputStream,不可以用PrintWriter、StreamReader等。

【編輯推薦】

【責任編輯:閆佳明 TEL:(010)68476606】
責任編輯:閆佳明 來源: my.eoe.cn
相關推薦

2013-03-27 13:26:04

Android開發Socket

2016-11-04 21:37:16

PythonSocket

2012-03-19 11:41:30

JavaSocket

2010-03-03 16:19:29

Python Sock

2015-07-27 09:53:13

PHP編程過程

2013-09-22 11:03:20

SocketSocket編程

2011-06-13 16:51:19

Qt Socket

2015-04-24 09:48:59

TCPsocketsocket編程

2010-03-22 10:42:37

Java Socket

2010-03-17 14:22:40

Java Socket

2017-12-23 14:38:41

Android編程開發優化

2009-06-11 10:00:05

Java Socket

2012-03-19 10:55:27

JavaSocket

2022-10-24 08:01:32

Sockets網絡協議

2019-02-12 15:04:09

2009-02-04 09:45:05

Java SocketSocket APIJava編程

2012-03-19 10:41:15

JavaSocket

2011-06-20 13:43:08

Qt Socket 線程

2015-09-08 10:06:18

JavaSocket編程通信

2010-03-19 16:51:53

Java Socket
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区av | 欧美性吧| 色综合成人网 | 久久国产免费看 | 免费在线一区二区 | 五月激情久久 | wwww.8888久久爱站网 | 精品久久香蕉国产线看观看亚洲 | av片在线播放 | 国产精品视频在线播放 | 国产一区欧美一区 | 美女在线视频一区二区三区 | 在线观看国产精品视频 | 国产精品久久久久999 | 中文字幕一区二区三区日韩精品 | 欧美视频二区 | 亚洲综合久久精品 | www亚洲精品| 天天草草草 | 精品亚洲一区二区三区 | 久草网在线视频 | 日韩a视频 | 伊人久久大香线 | 成人三级网址 | 欧美午夜影院 | 亚洲高清视频一区二区 | 谁有毛片 | 久综合 | 色橹橹欧美在线观看视频高清 | 国产精品综合一区二区 | 国产ts人妖另类 | 国产成在线观看免费视频 | 欧美网站一区二区 | 亚洲+变态+欧美+另类+精品 | 久久伊人亚洲 | 欧美极品视频在线观看 | 欧美一区二区网站 | 中文字幕av在线播放 | 爱爱免费视频网站 | 日韩免费一区二区 | 色综合色综合网色综合 |