Android網路編程(一)---Socket基礎

來源:互聯網
上載者:User

標籤:網路編程   socket   udp   tcp   android4.0   

Socket通常稱為“”通訊端。Socket字面上的中文意思為“插座”。一台伺服器可能會提供很多服務,每種服務對應一個Socket,而客戶的“插頭”也是一個Socket。Socket是應用程式層與TCP/IP協議族通訊的中間軟體抽象層,它是一組介面。Socket把複雜的TCP/IP協議族隱藏在Socket介面後面,對使用者來說,一組簡單的介面就是全部,讓Socket去組織資料,以符合指定的協議。Socket用於描述IP地址和連接埠,是一個通訊鏈的控制代碼。應用程式通常通過通訊端向網路發出請求或者應答網路請求。Socket的基本操作包括:(1)串連遠程機器(2)發送資料(3)接收資料(4)關閉串連(5)綁定連接埠(6)監聽到達資料(7)在綁定的連接埠上接受來自遠程機器的串連。

伺服器要和用戶端通訊,兩者都要執行個體化一個Socket。伺服器和用戶端的Socket是不一樣的,用戶端可以實現串連遠程機器、發送資料、接收資料、關閉串連等,伺服器還需要實現綁定連接埠,監聽到達的資料,接受來自遠程機器的串連。Android在包java.net裡面提供了兩個類:ServerSocket和Socket,前者用於執行個體化伺服器的Socket,後者用來執行個體化用戶端的Socket。在串連成功時,應用程式兩端都會產生一個Socket執行個體,操作這個執行個體,完成用戶端到伺服器所需的會話。

那麼如何構造一個Socket呢????

(1)常用的構造用戶端Socket的方法有以下幾種:
Socket():建立一個新的未串連的Socket。
Socket(Proxy proxy):使用指定的代理類型建立一個新的未串連的Socket。

Socket(String dstName,int dstPort):使用指定的目標伺服器的IP地址和目標伺服器的連接埠號碼,建立一個新的Socket。

Socket(String dstName,int dstPort,InetAddress localAddress,int localPort):使用指定的目標主機、目標連接埠、本地地址和本地連接埠,建立一個新的Socket。

Socket(InetAddress dstAddress,int dstPort):使用指定的本地地址和本地連接埠,建立一個新的Socket。

Socket(InetAddress dstAddress,int dstPort,InetAddress localAddress,int localPort):使用指定的目標主機、目標連接埠、本地地址和本地連接埠,建立一個新的Socket。

其中,proxy為Proxy 伺服器地址,dstAddress為目標伺服器IP地址,dstPort為目標伺服器的連接埠號碼(伺服器的每種服務都會綁定在一個連接埠上面),dstName為目標伺服器的主機名稱。

注意:0~1023連接埠為系統保留,使用者設定的連接埠號碼應該大於1023.

Socket類重要方法:
(1)Public InputStream getInputStream()                                  讀出該Socket中的資料

(2)public OutputStream getOutputStream()                             向該Socket中寫入資料

(3)public synchronized void close()                                           關閉該Socket

(2)常用的構造伺服器端的ServerSocket的方法有以下幾種:
           ServerSocket():構造一個新的未綁定的ServerSocket

           ServerSocket(int port):構造一個新的ServerSocket執行個體並綁定到指定連接埠。如果Port參數為0,連接埠將由作業系統自動分配,此時進入隊列的數目將被設定為50.

           ServerSocket(int port,int backlog):構造一個新的ServerSocket執行個體並綁定到指定連接埠,並且指定進入隊列的數目。如果port參數為0,連接埠將由作業系統系統分配

           ServerSocket(int port,int backlog,InetAddress localAddress):構造一個新的ServerSocket執行個體並綁定到指定連接埠和指定地址。如果localAddress參數為null,則可以使                                                                                                                              用任意地址,如果port參數為0,連接埠將由作業系統自動分配。

Socket一般有兩種類型:TCP通訊端和UDP通訊端。

 TCP和UDP在傳輸過程中的具體實現方法不同。兩者都接收傳輸協議資料包並將其內容向前傳送到應用程式層。TCP把訊息分解成資料包並在接收端以正確的順序把它們重新裝配起來,TCP還處理對遺失資料包的重傳請求,位於上層的應用程式層要處理的事情就少多了。UDP不提供裝配和重傳請求這些功能,它只是向前傳送資訊包。位於上層的應用程式層必須確保訊息是完整的,並且是以正確的順序裝配的。

 轉載請註明出處:http://blog.csdn.net/android_jiangjun/article/details/27670355

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.