和java通信_[源码和文档分享]基于JAVA的即时通信软件
一.設計任務書
1.1 設計任務
本文設計的是一個簡單的即時通信軟件,利用 Java Socket 進行點到點通信,其工作機制模仿即時通信軟件的基本功能,已實現的功能有:客戶端登錄
客戶端退出
群組成員之間傳輸文字或圖片信息
該軟件分為客戶端與服務器端,客戶端負責與服務器建立連接,且執行收發消息的操作,服務器端負責等待客戶端連接并保存用戶的昵稱與客戶端 Socket 的輸出流的對應關系。
1.2 技術指標
本程序使用的是 TCP 協議實現的即時通信軟件,程序是基于 Java 語言開發的,主要用到的技術有:Socket 編程
自定義協議
如果使用普通的方法來標記一條消息的結束,如換行符,那么程序就不易擴展,只能發送純文本消息,所以需要自己定義一種消息的格式,并且我們還需要提供發送消息與解析消息的方法。
服務器端創建一個 ServerSocket,循環等待客戶端的連接,每當有客戶端連接,就獲取到客戶端的 Socket 對象,并將該對象交付給一個服務器端線程處理,服務器端線程會不斷從 Socket 的輸入流中解析出消息類型、長度及消息內容,然后根據類型執行不同的操作。
客戶端與服務器建立連接,同時開啟一個客戶端線程接收服務器端發送的消息,客戶端登錄是向服務器發送一條登錄命令,客戶端向服務器發送一條消息首先需要包裝成定義的消息格式,然后再發送給服務器。
不管是發送消息還是發送命令其實本質都是一條消息,向服務器發送的消息都必須按照定義的格式來。
1.3 論證結果
經論證,這個任務是可行的。TCP 協議的實現細節 Java Socket 已經幫我們做好了,我們需要做的是定義一個協議工具類,實現發送消息與接收消息的方法,然后客戶端與服務器端都利用這兩個方法來進行消息的發送與解析。
二.實現原理
2.1 基于 TCP 協議的即時通信
TCP 協議是一種端到端協議,當一臺計算機要與遠程的另一臺計算機連接時,TCP 協議會讓他們建立一個用于發送和接收數據的虛擬鏈路。TCP 要負責收集數據信息包,并將其按照適當的次序放好傳送,接收端收到后再正確的還原,TCP協議使用了重發機制,當一個通信實體發送一個消息到另一個通信實體后,需要接收到另一個通信實體的確認消息,如果沒有收到確認消息,則會重發消息。所以 TCP 協議保證了數據包在傳輸中不發生錯誤。通信示意圖如圖 1 所示。
?
在通信實體 1 與通信實體 2 建立虛擬鏈路前,必須有一方主動來接收其他通信實體的連接請求,作出“主動”的通信實體稱為服務器,發出連接請求的通信實體稱為客戶機。
2.2 自定義協議的定義
2.2.1 通信原理
客戶端與服務器端相互通信,首先要建立 Socket 連接,連接建立好后雙方都會拿到一個 Socket 對象,通過 Socket 對象拿到輸入、輸出流可以實現寫、讀的功能。服務器端接收到客戶端的連接,將客戶端的 Socket 對象交付給一個線程,該線程負責維護該客戶端,在線程體中需要使用死循環不斷的獲取客戶端發給服務器的消息。
2.2.2 存在的問題
那么問題來了:怎么標志客戶端發送的消息的結尾?如果不對結尾標志,服務器端將不知道客戶端本次客戶端發送的消息到哪里。
參考文檔和完整的文檔和源碼下載地址:
總結
以上是生活随笔為你收集整理的和java通信_[源码和文档分享]基于JAVA的即时通信软件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dvd管理器java_Java DVD管
- 下一篇: java 与 乱码问题_透彻分析和解决一