1. gzyueqian
      13352868059

      Java培訓(xùn):什么是Java中的非阻塞套接字編程?

      更新時(shí)間: 2022-05-10 10:32:17來(lái)源: 粵嵌教育瀏覽量:8615

        Java 中的套接字程序可以在阻塞和非阻塞模式下工作。在阻塞套接字模式下,系統(tǒng)調(diào)用事件會(huì)暫停執(zhí)行,直到收到適當(dāng)?shù)幕貜?fù)。在非阻塞套接字中,即使系統(tǒng)調(diào)用已被調(diào)用,它也會(huì)繼續(xù)執(zhí)行,并在稍后適當(dāng)?shù)靥幚砥浠貜?fù)。本文詳細(xì)闡述了非阻塞套接字編程的概念及其相關(guān)領(lǐng)域,并附有適當(dāng)?shù)氖纠O雽W(xué)習(xí)java技術(shù),建議考慮報(bào)名參加Java培訓(xùn),有明確的學(xué)習(xí)路線和全面系統(tǒng)的課程,能獲得較快提升。

        概述

        有不同類型的套接字,它們的類型根據(jù)它們的通信屬性進(jìn)行分類。通信屬性由它們支持的協(xié)議定義。通常,它需要相同類型的套接字來(lái)建立任何類型的通信,因?yàn)閭鬏敂?shù)據(jù)的標(biāo)準(zhǔn)規(guī)則集是由它們使用的協(xié)議定義的。協(xié)議是 TCP 或 UDP。應(yīng)用程序指定它支持的協(xié)議。通常,一個(gè)應(yīng)用程序支持多個(gè)協(xié)議,因?yàn)榫帉?xiě)它的程序員提供了所需的代碼來(lái)支持該域中的特定套接字類型。如果你一直想知道 TCP/IP 支持的類型套接字,它們?nèi)缦拢?/span>

        








        阻塞和非阻塞套接字都有其用途,但是阻塞套接字更常見(jiàn),因?yàn)樗鼈円子谔幚聿⑶沂?Java 中套接字編程的默認(rèn)選擇。簡(jiǎn)而言之:在阻塞套接字程序中,代碼行一個(gè)接一個(gè)地執(zhí)行,但它們?cè)谶M(jìn)行系統(tǒng)調(diào)用的指令處被阻塞或停止。它在那里等待,直到收到適當(dāng)?shù)幕貜?fù)、發(fā)生超時(shí)或遇到某些錯(cuò)誤。另一方面,非阻塞套接字程序不等待回復(fù)并繼續(xù)執(zhí)行,即使調(diào)用可能尚未完成。來(lái)自被調(diào)用系統(tǒng)調(diào)用的任何不完整回復(fù)都將單獨(dú)處理。

        阻塞與非阻塞套接字的使用

        阻塞套接字適用于系統(tǒng)調(diào)用的回復(fù)至關(guān)重要的情況。例如,假設(shè)一個(gè)客戶端程序想要連接到服務(wù)器。程序必須僅在建立連接或發(fā)生某些錯(cuò)誤時(shí)才響應(yīng)。這意味著套接字必須阻止用戶控制,直到收到適當(dāng)?shù)幕貜?fù)。通過(guò)參加java培訓(xùn)課程,你可以學(xué)習(xí)更多java知識(shí),以提高java技能。

        另一方面,考慮一個(gè)客戶端正在嘗試建立多個(gè)連接,并且每個(gè)連接都可以獨(dú)占另一個(gè)。在這種情況下,套接字一定不能死板地阻塞另一個(gè)系統(tǒng)調(diào)用來(lái)建立連接。這是非阻塞套接字的場(chǎng)景。

        





        Java中的非阻塞套接字

        Java 有 TCP 和 UDP 套接字。ServerSocket 和 Socket 類中定義的 connect()、accept()、read() 和 write() 等方法用于阻塞套接字編程。例如,當(dāng)客戶端調(diào)用 read() 方法從服務(wù)器讀取數(shù)據(jù)時(shí),線程會(huì)被阻塞,直到數(shù)據(jù)可用。這種情況在某些情況下是不可取的。相反,我們可以做的是利用等待時(shí)間來(lái)做一些其他的任務(wù)。然后,客戶端套接字可以在數(shù)據(jù)可用時(shí)發(fā)出通知。另一個(gè)問(wèn)題是,在多套接字連接中,每個(gè)客戶端都是一個(gè)單獨(dú)的線程。因此,存在維護(hù)客戶端線程池的開(kāi)銷。

        由于順序執(zhí)行,阻塞套接字很簡(jiǎn)單。另一方面,非阻塞套接字是非順序的。它們需要不同的視角來(lái)在編程中實(shí)現(xiàn)它們。在某種程度上,非阻塞套接字程序有點(diǎn)復(fù)雜,而且是更高級(jí)的套接字通信技術(shù)。

        非阻塞套接字 API

        Java中支持非阻塞套接字通信的類如下:

        

        總結(jié)

        除了 Java API 庫(kù)提供了一些專門解決非阻塞套接字編程問(wèn)題的額外類之外,其實(shí)現(xiàn)或多或少類似于普通套接字編程。很多對(duì)java感興趣的初學(xué)者都會(huì)選擇報(bào)java培訓(xùn)班學(xué)習(xí),可以更快速學(xué)到有用的知識(shí)和技能,節(jié)省很多時(shí)間和精力。


      免費(fèi)預(yù)約試聽(tīng)課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲欧美一级久久精品 | 久久久国产不卡一区二区 | 亚洲欧美中文一区二区三区 | 熟女制服丝袜另类中文字幕 | 日韩一区二区久久 | 日本另类亚洲色区 |