2018-06-11 13:57:34 1212瀏覽
本篇文章小編主要是想帶大家一起來(lái)看一下扣丁學(xué)堂Java在線學(xué)習(xí)簡(jiǎn)述的Java Socket編程Socket傳輸模式,對(duì)此感興趣的小伙伴可以隨著小編一起來(lái)了解下。
Socket傳輸模式:
Sockets有兩種主要的操作方式:面向連接的和無(wú)連接的,面向連接的sockets操作就像一部電話,他們必須建立一個(gè)連接和一人呼叫,所有的事情在到達(dá)時(shí)的順序與它們出發(fā)時(shí)的順序時(shí)一樣,無(wú)連接的sockets操作就像是一個(gè)郵件投遞,沒(méi)有什么保證,多個(gè)郵件可能在到達(dá)時(shí)的順序與出發(fā)時(shí)的順序不一樣。
到底用哪種模式是郵應(yīng)用程序的需要決定的,如果可靠性更重要的話,用面向連接的操作會(huì)好一些.比如文件服務(wù)器需要他們的數(shù)據(jù)的正確性和有序性。如果一些數(shù)據(jù)丟失了,系統(tǒng)的有效性將會(huì)失去,一些服務(wù)器,比如間歇性地發(fā)送一些數(shù)據(jù)塊,如果數(shù)據(jù)丟了的話,服務(wù)器并不想要再重新發(fā)過(guò)一次,因?yàn)楫?dāng)數(shù)據(jù)到達(dá)的時(shí)候,它可能已經(jīng)過(guò)時(shí)了,確保數(shù)據(jù)的有序性和正確性需要額外的操作的內(nèi)存消耗,額外的費(fèi)用將會(huì)降低系統(tǒng)的回應(yīng)速率。
無(wú)連接的操作使用數(shù)據(jù)報(bào)協(xié)議,一個(gè)數(shù)據(jù)報(bào)是一個(gè)獨(dú)立的單元,它包含了所有的這次投遞的信息,把它想象成一個(gè)信封吧,它有目的地址和要發(fā)送的內(nèi)容。這個(gè)模式下的socket不需要連接一個(gè)目的的socket,它只是簡(jiǎn)單地投出數(shù)據(jù)報(bào),無(wú)連接的操作是快速的和高效的,但是數(shù)據(jù)安全性不佳。
面向連接的操作使用TCP協(xié)議,一個(gè)這個(gè)模式下的socket必須在發(fā)送數(shù)據(jù)之前與目的地的socket取得一個(gè)連接,一旦連接建立了,sockets就可以使用一個(gè)流接口:打開(kāi)-讀-寫(xiě)-關(guān)閉,所有的發(fā)送的信息都會(huì)在另一端以同樣的順序被接收,面向連接的操作比無(wú)連接的操作效率更低,但是數(shù)據(jù)的安全性更高。
SUN一直是網(wǎng)絡(luò)建設(shè)的支持者,所以在Java中支持sockets就不足為奇了.實(shí)際上,Java降低了建立一個(gè)sockets程序的難度,每一個(gè)傳輸模式都被封裝到了不同的類中,面向連接的類將會(huì)首先被我們討論。
Sockets有兩種主要的操作方式:面向連接的和無(wú)連接的.面向連接的sockets操作就像一部電話,他們必須建立一個(gè)連接和一人呼叫,所有的事情在到達(dá)時(shí)的順序與它們出發(fā)時(shí)的順序時(shí)一樣.無(wú)連接的sockets操作就像是一個(gè)郵件投遞,沒(méi)有什么保證,多個(gè)郵件可能在到達(dá)時(shí)的順序與出發(fā)時(shí)的順序不一樣。
到底用哪種模式是郵應(yīng)用程序的需要決定的,如果可靠性更重要的話,用面向連接的操作會(huì)好一些,比如文件服務(wù)器需要他們的數(shù)據(jù)的正確性和有序性,如果一些數(shù)據(jù)丟失了,系統(tǒng)的有效性將會(huì)失去.一些服務(wù)器,比如間歇性地發(fā)送一些數(shù)據(jù)塊。如果數(shù)據(jù)丟了的話,服務(wù)器并不想要再重新發(fā)過(guò)一次,因?yàn)楫?dāng)數(shù)據(jù)到達(dá)的時(shí)候,它可能已經(jīng)過(guò)時(shí)了。確保數(shù)據(jù)的有序性和正確性需要額外的操作的內(nèi)存消耗,額外的費(fèi)用將會(huì)降低系統(tǒng)的回應(yīng)速率。
無(wú)連接的操作使用數(shù)據(jù)報(bào)協(xié)議,一個(gè)數(shù)據(jù)報(bào)是一個(gè)獨(dú)立的單元,它包含了所有的這次投遞的信息,把它想象成一個(gè)信封吧,它有目的地址和要發(fā)送的內(nèi)容。這個(gè)模式下的socket不需要連接一個(gè)目的的socket,它只是簡(jiǎn)單地投出數(shù)據(jù)報(bào),無(wú)連接的操作是快速的和高效的,但是數(shù)據(jù)安全性不佳。
面向連接的操作使用TCP協(xié)議,一個(gè)這個(gè)模式下的socket必須在發(fā)送數(shù)據(jù)之前與目的地的socket取得一個(gè)連接,一旦連接建立了,sockets就可以使用一個(gè)流接口:打開(kāi)-讀-寫(xiě)-關(guān)閉,所有的發(fā)送的信息都會(huì)在另一端以同樣的順序被接收,面向連接的操作比無(wú)連接的操作效率更低,但是數(shù)據(jù)的安全性更高。
SUN一直是網(wǎng)絡(luò)建設(shè)的支持者,所以在Java中支持sockets就不足為奇了,實(shí)際上Java降低了建立一個(gè)sockets程序的難度,每一個(gè)傳輸模式都被封裝到了不同的類中,面向連接的類將會(huì)首先被我們討論。
以上就是扣丁學(xué)堂Java培訓(xùn)小編給大家介紹的Java Socket編程Socket傳輸模式,希望對(duì)大家有所幫助,想要了解更多內(nèi)容的小伙伴可以登錄扣丁學(xué)堂官網(wǎng)咨詢。扣丁學(xué)堂是專業(yè)的Java培訓(xùn)機(jī)構(gòu),不僅有專業(yè)的老師和與時(shí)俱進(jìn)的課程體系,還有大量的Java在線視頻供學(xué)員觀看學(xué)習(xí),想要學(xué)好Java開(kāi)發(fā)的小伙伴不要再猶豫了??鄱W(xué)堂Java技術(shù)交流群:670348138。
【關(guān)注微信公眾號(hào)免費(fèi)領(lǐng)取丁豆獲取更多學(xué)習(xí)資料】
查看更多關(guān)于“Java開(kāi)發(fā)資訊”的相關(guān)文章>>