ServerSocket與Socket類

ServerSocket與Socket類

TCP套接字協議:

TCP最主要的特徵就是能夠建立長時間的連接,而且能夠保證數據安全的送達,但是速度比較慢。使用TCP進行連接的時候會有三次握手,之後才建立起服務器與客戶端的連接,因爲TCP的鏈接習慣是詢問對方機器是否存在,不存在就不會建立連接,存在纔會建立連接。

示意圖:

image

ServerSocket類:

在Java中想要使用TCP協議做編寫服務端的話,需要使用到ServerSocke類,這個類是TCP協議的。

TCP協議的操作類都在java.net包下放着,ServerSocket類就是服務器端,服務器插座,Socket這個單詞就是插座的意思。

Socket類:

同樣是 官網:www.fhadmin.org TCP協議並與ServerSocket類相對的是Socket類,這個類是作爲一個通訊端、客戶端的存在。用於去連接服務器端,這個Socket如果是從ServerSocket拿到的對象,那就是與服務器連接的那個Socket,如果是自己創建的Socket對象,那你就是客戶端。

在理論上可以有無限個Socket端來連接ServerSocket端,在ServerSocket端上每有一個Socket端來連接,就會創建與之相對的Socket對象。也就是說ServerSocket端上也有Socket對象,每一個Socket就像插座上的插孔一樣,連接着通訊端的Socket對象。

示意圖:

image

ServerSocket與Socket類:

ServerSocket類可以編寫服務器端,Socket類可以用來編寫客戶端。創建ServerSocket對象的時候需要聲明一個端口號,這樣通訊端才能通過端口號去連接。創建Socket對象的時候則需要聲明一個IP地址和ServerSocket對象的端口號,這樣才能對服務端發出連接請求。在發出連接請求成功連接後,Socket通訊端會創建兩個流,一個是InputStream流一個是OutputStream流。同時,ServerSocket服務器端會得到一個Socket對象,然後這個Socket對象也會創建出InputStream流和OutputStream流。

示意圖:

image

上面只是粗略的說一下如何建立的連接,實際上ServerSocket服務器端的Socket對象是通過accept();方法得到的,這個方法監聽着聲明的端口號。一旦有通訊端來連接,就會創建Socket對象,客戶端和服務器端建立連接成功之後就通過InputStream流和OutputStream流來進行交互數據。

完整示意圖:

image

明白了兩個類之間的聯繫後,我們就開始嘗試編寫一個服務器端吧。我們使用瀏覽器作爲Socket端,因爲瀏覽器也是TCP協議的,所以可以連接到我們編寫的服務器端。(提示:如果確定編寫的代碼無誤,但是瀏覽器卻連接不到編寫的服務端,可以更換IE瀏覽器試一下)

代碼示例:

image

運行結果:

image

瀏覽器會發送一段瀏覽器的信息:

image

我們還可以使用字節流,官網:www.fhadmin.org 讀取一些漂亮妹子照片的並通過網絡流輸出到瀏覽器上,估計很多屌絲們就精神一震了(手動滑稽)。

代碼示例:

image

運行結果:

image

現在我們已經知道如何編寫服務器端,並且知道可以使用瀏覽器作爲客戶端去進行連接了,那麼接下來使用Socket類進行編寫一個客戶端,簡單的與服務器端交互一下數據。官網:www.fhadmin.org 服務器端的編寫和上面的第一個示例沒有區別,就不過多解釋。

客戶端則是需要聲明一個ip地址和端口號,這個端口號是服務器端的端口號,這點要注意。然後同樣的通過流來交互數據,讀取或輸出數據時,需要看一下服務器端是先讀取還是先輸出,服務器端先讀取的話客戶端就需要先編寫輸出數據的代碼,否則反之。關於這個誰先讀取或輸出是沒有規定的,都是根據另一端的編寫的代碼來決定。

服務器端代碼示例:

image

客戶端代碼示例:

image

運行結果:

image

當有兩個結果並且想要兩個控制檯界面時,可以點擊這裏,選擇NewConsoleView新建控制檯:

image

image

代碼之間的關係示意:

image

多網卡:

多網卡就是一臺計算機中有好幾個網卡,一般普通PC電腦有兩個網卡,一個物理網卡,一個虛擬網卡。筆記本電腦則一般有三個網卡一個無線網卡,一個物理網卡,一個虛擬網卡。

一般在服務器上有很多個網卡,所以就有很多網線接口,因爲有些服務器會需要“三合一網絡”,“三合一網絡”就是將聯通、電信、移動的網線都接入到這臺服務器裏,那這臺服務器就能同時使用三個運營商的網絡了。

而且因爲服務器機房裏一般都是有很多臺服務器在進行集羣,所以也需要一部分網絡接口用於連接內部的集羣網絡,一部分網絡接口則連接通過防火牆之類的安全措施過濾後的外部網絡。

多網卡服務器圖片:

image

發佈了36 篇原創文章 · 獲贊 7 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章