java 網絡通信零基礎入門-------理論篇

網絡通信基礎入門:
在通信過程中,我們需要有一個服務器,和若干個客戶端。我們要在每一個客戶端和服務器之間都建立一個通道,即輸入輸出流。這個通道是客

戶端與服務器相之間用於傳輸數據的通道。而服務器的作用則是將一個或多個客戶端傳來的信息整合,然後做出相應的處理。所以說,服務器就好像是一

隻手,對客戶端之間的信息傳遞經行操作。故在通信的過程中,我們必須至少有一個服務器。
我們一般需要以下幾個步驟:
1.創建服務器與客戶端:
2.連接
3.獲取輸入輸出流
4.傳輸數據

 

1.服務器:這裏我們需要用到一個類,java.net.ServerSocket,這是一個服務器類,例如:
//創建服務器
ServerSocket socket = new ServerSocket(5200);
//等待連接
Socket client = socket.accept();
就創建了一個空的服務器,並讓服務器進入等待狀態。當客戶端與服務器創建連接後,就會返回一個服務器類,可以用於獲取通道。這裏的“5200”指的

是我們對於服務器所要綁定的端口,每一臺電腦都會有0~65535個端口,這些端口是通信過程中每個服務器所在的區域,就像是每個學校都會有很多學院

,如果不知道我們要尋找的學院的位置,就無法聯繫找到學院裏的人一樣。對於端口,一般我們所設定的不能爲0~1024之間,因爲這是一個系統佔用的區

間,當然,更不能超過65535了。

2.客戶端:從理論上講,只要有一個電腦在某個端口上綁定了一個服務器。並且另外一臺電腦和他在同一個局域網中。那麼就可以用命令提示符中的

telnet命令進入該服務器,格式爲:
telnet 服務器所在電腦的IP地址 綁定的端口
然而,一般情況下我們直接用客戶端類Socket,直接進入服務器經行連接,例如:
Socket client = new Socket("192,168.0.1", 5200);
這句話就是創建一個客戶端,並與IP地址爲192,168.0.1的電腦上的5200端口經行連接,如果連接成功,服務器與客戶端就會有一個通道,我們可以用流

來獲取通道。

3.通道:獲取通道,在服務器中,當accept();運行後,會返回一個客戶端類,這就是與服務器建立連接的那個客戶端,我們可以用這個客戶端來創建輸

入輸出流。而在客戶端中,自己本身就是個客戶端,故可以直接用自己的客戶端創建輸出輸出流。

4.連接:當服務器和客戶端之間的聯繫都準備就緒後,就可以傳輸數據了。申明一下,服務器與客戶端之間並不是對立的個體,服務器只是一個工具,一

個用於處理數據的工具而已,但卻是整個通信的核心。因爲客戶端之間是沒有連接通道的,必須通過服務器來操控。服務器的操控行爲,直接影響到數據

的傳輸的意義,例如這串數據是表示的是一條信息,還是一條直線,還是一張圖片,都是由通信協議的制定,並由服務器處理成有效數據,傳給其他客戶

端的。

5.通信協議:在數據傳輸中,最底層的傳輸都是通過字節的傳輸來完成的。這樣一來,就會導致一個問題,當我得到一堆字節的時候,每個字節所代表什

麼意思呢?這就需要協議的制定。比如傳輸一幅圖,和前面的“哈夫曼壓縮”一樣,壓縮和解壓要形成一種規定,通信傳輸也一樣,我們是先傳輸的長或

者先傳輸高,這都是一種協議,有了這些協議,才能將數據清除的傳輸,並且讓人能夠讀懂。

實踐:
那麼下面讓我們開始做一個簡單的聊天吧!

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