日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
Android開發(fā)Socket編程

一.Socket簡介

創(chuàng)新互聯(lián)建站服務項目包括蘄春網站建設、蘄春網站制作、蘄春網頁制作以及蘄春網絡營銷策劃等。多年來,我們專注于互聯(lián)網行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網行業(yè)的解決方案,蘄春網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到蘄春省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!

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

二.使用基于TCP協(xié)議的Socket

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

2.Socket
   (a)創(chuàng)建Socket的方法:
        Socket(InetAddress remoteAddress,intremotePort)
        利用Socket構造函數(shù),可創(chuàng)建一個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還是數(shù)據(jù)報Socket
        localAddr,bindAddr是本地機器的地址(ServerSocket的主機地址)
        impl是Socket的父類,既可以創(chuàng)建ServerSocket,也可創(chuàng)建Socket
  (b)操作Socket的方法
         通信過程中順序:服務器端首先得到輸入流,然后將輸入流信息輸出到其各個客戶端
         Socket提供了getInputStream()和getOutputStream()方法來得到輸入輸出流。然后再對輸入流輸出流進行讀寫操作,例 如,對于服務器端,得到Socket對象后,調用getInputStream方法即  可得到來自客戶端的流,調用getOutStream方法可得到向客 戶端發(fā)送數(shù)據(jù)的流。對于客戶端,調用getInputStream方法即可得到來自服務器的流,調用getOutStream方法可得到向服務器端發(fā)送  數(shù) 據(jù)的流。
         InputStreamgetInputStream()
         OutputStreamgetOutputStream()
         可調用Socket的close()方法進行關閉,在關閉前,應將與Socket相關的所有輸入輸出流關閉,正著打開,倒著關閉。

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

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

三.使用基于UDP的Socket

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

補充:

           對AndroidManifest.xml的配置一定不要忘了:
          

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

【責任編輯: 閆佳明 TEL:(010)68476606】


本文名稱:Android開發(fā)Socket編程
網頁路徑:http://m.5511xx.com/article/dpjjeed.html