欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

JavaSocket編程筆記_動力節(jié)點Java學院整理-創(chuàng)新互聯(lián)

對于即時類應(yīng)用或者即時類的游戲,HTTP協(xié)議很多時候無法滿足于我們的需求。這會,Socket對于我們來說就非常實用了。下面是本次學習的筆記。主要分異常類型、交互原理、Socket、ServerSocket、多線程這幾個方面闡述。

10年積累的成都網(wǎng)站制作、網(wǎng)站設(shè)計、外貿(mào)網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有吳堡免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

異常類型

在了解Socket的內(nèi)容之前,先要了解一下涉及到的一些異常類型。以下四種類型都是繼承于IOException,所以很多之后直接彈出IOException即可。

UnkownHostException:      主機名字或IP錯誤
ConnectException:        服務(wù)器拒絕連接、服務(wù)器沒有啟動、(超出隊列數(shù),拒絕連接)
SocketTimeoutException:      連接超時
BindException:          Socket對象無法與制定的本地IP地址或端口綁定 


交互過程

Socket與ServerSocket的交互,下面的圖片我覺得已經(jīng)說的很詳細很清楚了。 


Socket構(gòu)造函數(shù)

Socket()
Socket(InetAddress address, int port)throws UnknownHostException, IOException
Socket(InetAddress address, int port, InetAddress localAddress, int localPort)throws IOException
Socket(String host, int port)throws UnknownHostException, IOException
Socket(String host, int port, InetAddress localAddress, int localPort)throws IOException


除去第一種不帶參數(shù)的之外,其它構(gòu)造函數(shù)會嘗試建立與服務(wù)器的連接。如果失敗會拋出IOException錯誤。如果成功,則返回Socket對象。

InetAddress是一個用于記錄主機的類,其靜態(tài)getHostByName(String msg)可以返回一個實例,其靜態(tài)方法getLocalHost()也可以獲得當前主機的IP地址,并返回一個實例。Socket(String host, int port, InetAddress localAddress, int localPort)構(gòu)造函數(shù)的參數(shù)分別為目標IP、目標端口、綁定本地IP、綁定本地端口。 


Socket方法

getInetAddress();      遠程服務(wù)端的IP地址
getPort();          遠程服務(wù)端的端口
getLocalAddress()      本地客戶端的IP地址
getLocalPort()        本地客戶端的端口
getInputStream();     獲得輸入流
getOutStream();      獲得輸出流

值得注意的是,在這些方法里面,最重要的就是getInputStream()和getOutputStream()了。 


Socket狀態(tài)

isClosed();            //連接是否已關(guān)閉,若關(guān)閉,返回true;否則返回false
isConnect();      //如果曾經(jīng)連接過,返回true;否則返回false
isBound();            //如果Socket已經(jīng)與本地一個端口綁定,返回true;否則返回false

如果要確認Socket的狀態(tài)是否處于連接中,下面語句是很好的判斷方式。

boolean isConnection=socket.isConnected() && !socket.isClosed();   //判斷當前是否處于連接


半關(guān)閉Socket

很多時候,我們并不知道在獲得的輸入流里面到底讀多長才結(jié)束。下面是一些比較普遍的方法:


  •  自定義標識符(譬如下面的例子,當受到“bye”字符串的時候,關(guān)閉Socket)
  •  告知讀取長度(有些自定義協(xié)議的,固定前幾個字節(jié)表示讀取的長度的)
  •  讀完所有數(shù)據(jù)
  •  當Socket調(diào)用close的時候關(guān)閉的時候,關(guān)閉其輸入輸出流

ServerSocket構(gòu)造函數(shù)

ServerSocket()throws IOException
ServerSocket(int port)throws IOException
ServerSocket(int port, int backlog)throws IOException
ServerSocket(int port, int backlog, InetAddress bindAddr)throws IOException 

名稱欄目:JavaSocket編程筆記_動力節(jié)點Java學院整理-創(chuàng)新互聯(lián)
當前URL:http://chinadenli.net/article44/edoee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗小程序開發(fā)ChatGPT做網(wǎng)站軟件開發(fā)網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司