日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

和java通信_[源码和文档分享]基于JAVA的即时通信软件

發布時間:2024/4/18 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 和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的即时通信软件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。