如何做網路通訊的項目?

來源:互聯網
上載者:User

JAVA TCP  ,SOCKET,MINA

什麼是Socket

網路上的兩個程式通過一個雙向的通訊串連實現資料的交換,這個雙向鏈路的一端稱為一個Socket。Socket通常用來實現客戶方和服務方的串連。Socket是TCP/IP協議的一個十分流行的編程介面,一個Socket由一個IP地址和一個連接埠號碼唯一確定。

但是,Socket所支援的協議種類也不光TCP/IP一種,因此兩者之間是沒有必然聯絡的。在Java環境下,Socket編程主要是指基於TCP/IP協議的網路編程。
 

短串連是一個簡單而有效處理方式,也是應用最廣的。問題是哪一方先斷
開串連呢?可以在服務端,也可以在用戶端,但是提倡在服務端主動斷開;

總結:
服務端程式或用戶端程式建立過程:
建立串連---??添加訊息過濾器(編碼解碼等)——>添加業務處理

Mina 處於中介層,它不關心底層網路資料如何傳輸,只負責接收底層資料,
過濾並轉換為Java 對象提供給我們的應用程式,然後把應用程式響應值過濾並
轉換為底層識別的位元組,提供給底層傳輸;
------總之:Mina 是底層資料轉送和使用者應用程式互動的介面!

關於遠程通訊。。。

一個完整的,大型的軟體項目往往需要幾個廠商分模組來完成。
廠商之間如何通訊?需要定製通訊通道。一般由硬體廠商來制定相關通道。
(軟體廠商需要聽從硬體廠商)

例如:
這次我們做的是telematics項目,我們公司負責做一個網關模組,硬體廠商是車廠,車機上報的指令通過三種通道來請求。
他們分別是:SMS,HTTP,TCP。(具體的,細節的傳輸機制在這裡不說)

廠商之間的通訊需要協議協議,之後各個廠商之間按照事先定製好的協議進行通訊。

關於協議制定:
在開發之前,各個廠商需要開會指定一套協議方案,也就是如何編解碼。
為什麼要制定協議呢?常用的協議制定方法有哪些?
我們知道,底層傳輸的都是位元據,服務端和用戶端建立串連後進行資料的互動,
接受這對方發送來的訊息,如何判定發送的請求或者響應的資料結束了呢?
總不能一直傻等著,或者隨意的就結束訊息接收吧。這就需要一個規則!
比如QQ 聊天工具,當輸入完一個訊息後,點擊發送按鈕向對方發送時,此時系
統就會在在你的訊息後添加一個文本分行符號,接收方看到這個文本分行符號就認為
這是一個完整的訊息,解析成字串顯示出來。而這個規則,就稱之為協議!

制定協議的方法:
1:定長訊息法:這種方式是使用長度固定的資料發送,一般適用於指令發
送。譬如:資料發送端規定發送的資料都是雙位元組,AA 表示啟動、BB 表
示關閉等等。

2:字元定界法:這種方式是使用特殊字元作為資料的結束符,一般適用於
簡單資料的發送。譬如:在訊息的結尾自動加上文本分行符號(Windows
使用\r\n,Linux 使用\n),接收方見到文本分行符號就認為是一個完整的
訊息,結束接收資料開始解析。注意:這個標識結束的特殊字元一定要
簡單,常常使用ASCII 碼中的特殊字元來標識。

3:定長報文頭法:使用定長報文頭,在報文頭的某個域指明報文長度。該
方法最靈活,使用最廣。譬如:協議為– 協議編號(1 位元組)+資料長
度(4 個位元組)+真實資料。請求到達後,解析協議編號和資料長度,根
據資料長度來判斷後面的真實資料是否接收完整。HTTP 協議的訊息報
頭中的Content-Length 也是表示訊息本文的長度,這樣資料的接收端
就知道到底讀到多長的位元組數就不用再讀取資料了。

根據協議,
把位元據轉換成Java 對象稱為解碼(也叫做拆包);
把Java對象轉換為位元據稱為編碼(也叫做打包);
我們這裡重點講解下後面兩個協議的具體使用!

作者:李少華
郵箱:xiaosanshaoli@126.com
QQ:305409913

關於編解碼:
網路傳輸的資料都是位元據,而我們的程式(JAVA)不可能直接去操作位元據;
這時候我們就需要來把接收到的位元組數群組轉換為字串,當然完全可以轉換為任何一個java基礎資料型別 (Elementary Data Type)或對象,
這就是解碼!而編碼恰好相反,就是把要傳輸的字串轉換為位元組!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.