[源碼和文檔分享]基於JAVA的即時通訊軟件

一.設計任務書

1.1 設計任務

本文設計的是一個簡單的即時通訊軟件,利用 Java Socket 進行點到點通訊,其工做機制模仿即時通訊軟件的基本功能,已實現的功能有:html

  • 客戶端登陸
  • 客戶端退出
  • 羣組成員之間傳輸文字或圖片信息

該軟件分爲客戶端與服務器端,客戶端負責與服務器創建鏈接,且執行收發消息的操做,服務器端負責等待客戶端鏈接並保存用戶的暱稱與客戶端 Socket 的輸出流的對應關係。編程

1.2 技術指標

本程序使用的是 TCP 協議實現的即時通訊軟件,程序是基於 Java 語言開發的,主要用到的技術有:服務器

  • Socket 編程
  • 自定義協議

若是使用普通的方法來標記一條消息的結束,如換行符,那麼程序就不易擴展,只能發送純文本消息,因此須要本身定義一種消息的格式,而且咱們還須要提供發送消息與解析消息的方法。tcp

服務器端建立一個 ServerSocket,循環等待客戶端的鏈接,每當有客戶端鏈接,就獲取到客戶端的 Socket 對象,並將該對象交付給一個服務器端線程處理,服務器端線程會不斷從 Socket 的輸入流中解析出消息類型、長度及消息內容,而後根據類型執行不一樣的操做。工具

客戶端與服務器創建鏈接,同時開啓一個客戶端線程接收服務器端發送的消息,客戶端登陸是向服務器發送一條登陸命令,客戶端向服務器發送一條消息首先須要包裝成定義的消息格式,而後再發送給服務器。線程

無論是發送消息仍是發送命令其實本質都是一條消息,向服務器發送的消息都必須按照定義的格式來。設計

1.3 論證結果

經論證,這個任務是可行的。TCP 協議的實現細節 Java Socket 已經幫咱們作好了,咱們須要作的是定義一個協議工具類,實現發送消息與接收消息的方法,而後客戶端與服務器端都利用這兩個方法來進行消息的發送與解析。htm

二.實現原理

2.1 基於 TCP 協議的即時通訊

TCP 協議是一種端到端協議,當一臺計算機要與遠程的另外一臺計算機鏈接時,TCP 協議會讓他們創建一個用於發送和接收數據的虛擬鏈路。TCP 要負責收集數據信息包,並將其按照適當的次序放好傳送,接收端收到後再正確的還原,TCP協議使用了重發機制,當一個通訊實體發送一個消息到另外一個通訊實體後,須要接收到另外一個通訊實體的確認消息,若是沒有收到確認消息,則會重發消息。因此 TCP 協議保證了數據包在傳輸中不發生錯誤。通訊示意圖如圖 1 所示。對象

在通訊實體 1 與通訊實體 2 創建虛擬鏈路前,必須有一方主動來接收其餘通訊實體的鏈接請求,做出「主動」的通訊實體稱爲服務器,發出鏈接請求的通訊實體稱爲客戶機。blog

2.2 自定義協議的定義

2.2.1 通訊原理

客戶端與服務器端相互通訊,首先要創建 Socket 鏈接,鏈接創建好後雙方都會拿到一個 Socket 對象,經過 Socket 對象拿到輸入、輸出流能夠實現寫、讀的功能。服務器端接收到客戶端的鏈接,將客戶端的 Socket 對象交付給一個線程,該線程負責維護該客戶端,在線程體中須要使用死循環不斷的獲取客戶端發給服務器的消息。

2.2.2 存在的問題

那麼問題來了:怎麼標誌客戶端發送的消息的結尾?若是不對結尾標誌,服務器端將不知道客戶端本次客戶端發送的消息到哪裏。

 


參考文檔和完整的文檔和源碼下載地址:

https://www.write-bug.com/article/1371.html

相關文章
相關標籤/搜索