91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java nio socket的問題實例分析

發布時間:2021-12-16 16:48:44 來源:億速云 閱讀:154 作者:iii 欄目:云計算

本篇內容介紹了“java nio socket的問題實例分析”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

第一個問題:

java nio的開發過程當中,在我們一個channel對象的時候,第一步就是要把它的阻塞模式配置為非阻塞。ServerSocketChannel.configureBlocking(false);

我們試圖去了解一下這個configureBlocking函數究竟做了些什么事情,

但是最終我們找到了一個native的函數,具體內部干了些什么,貌似不是很容易了解。

那么我們試一下,把它配置為true的話,會發生什么樣的事情。

結果,在register到selector上的時候,直接報錯了。

java.nio.channels.IllegalBlockingModeException

關于這個問題,雖然沒有得到一個確切的答案,不過貌似基本能夠解決我們的一部分疑惑,要使用selector就只能是false。

第二個問題,有一個簡單的java nio的例子,當中我們用到了SelectionKey當中3個值,OP_READ、OP_CONNECT、OP_ACCEPT。但是如果我們看一下java源碼的話,會發現,其實還有一個值,叫做OP_WRITE,這個值究竟是怎么用的,因為在我們之前例子當中,server和client之間的數據交換已經基本完成,在收到read事件之后,通過channel把響應寫回去,貌似沒有OP_WRITE什么事啊!!!

首先我們對OP_READ、OP_CONNECT、OP_ACCEPT這幾個值,重新進行一下解釋,以OP_READ為例,應該解釋為read就緒,換句話說,對方,已經向我寫入數據了,這個時候開始讀了。

那么OP_WRITE就好解釋了,寫就緒,那么寫就緒的條件是什么呢?大體可以有2個條件,自己的寫緩沖區是有空間的,網絡環境是暢通的。

我們試一下,如果我們把一個SocketChannel的OP_WRITE注冊到selector上的話,會發生什么樣的事情。

修改一下之前的代碼,Server端,接收一個客戶端連接之后調用這樣一句

channel.register(this.selector, SelectionKey.OP_WRITE);//原來是OP_READ

這樣的話,因為網絡是暢通的,本地的寫緩沖區也是空間很充裕的,會一直試圖做寫的事情。

綜上所述,在網絡環境很好,以及寫出的任務量不是很大的情況下,可能并不需要OP_WRITE的使用,而在某些高并發的情況下,OP_WRITE可能還是有其實際的用途的。

“java nio socket的問題實例分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巢湖市| 烟台市| 孟州市| 眉山市| 高州市| 且末县| 莲花县| 张掖市| 广平县| 钟祥市| 汶川县| 改则县| 榕江县| 延川县| 青神县| 通州市| 宣化县| 广元市| 新野县| 同江市| 新源县| 盘山县| 荆门市| 马关县| 新宾| 东山县| 本溪市| 陈巴尔虎旗| 泽库县| 杭锦后旗| 道真| 星子县| 扬中市| 玛曲县| 清水河县| 柘城县| 钟山县| 韶山市| 茶陵县| 驻马店市| 子长县|