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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

C/S架构网络聊天软件——Java Chat Application 用java做一个聊天机器人

發布時間:2025/3/15 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C/S架构网络聊天软件——Java Chat Application 用java做一个聊天机器人 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Fighting!

    • 一、C/S概念
      • 1.1 什么是C/S
      • 1.2 C/S與B/S的區別
    • 二、主頁面
    • 三、介紹
    • 四、特征
    • 五、jServer
    • 六、jMessenger
    • 七、使用代碼
      • 7.1 導入項目后報錯情況
      • 7.2 解決辦法

一、C/S概念

1.1 什么是C/S

??C/S分布式模式,是計算機用語。C是指Client,S是指Server,C/S模式就是指客戶端/服務器模式。是計算機軟件協同工作的一種模式,通常采取兩層結構。服務器負責數據的管理,客戶機負責完成與用戶的交互任務。

1.2 C/S與B/S的區別

C/S模式是一種兩層結構的系統,第一層是在客戶端上安裝客戶端應用程序,第二層是在服務器上安裝應用服務器。在C/S模式的工作過程中,客戶端程序請求,服務器程序接收并處理客戶端程序請求,并返回結果。

B/S模式,即瀏覽器/服務器模式,是在傳統的兩層C/S模式基礎上發展起來的一種新的網絡結構模式,其本質是三層C/S模式。

在用戶的計算機上安裝瀏覽器軟件,在服務器上存儲數據,安裝服務應用程序,如WWW服務器和文件服務器。用戶通過瀏覽器訪問服務器,以進行信息瀏覽、文件傳輸和電子郵件服務。

兩者區別如下:

一、指代不同

  • C/S:就是指客戶端/服務器模式。是計算機軟件協同工作的一種模式,采取兩層結構。服務器負責數據的管理,客戶機負責完成與用戶的交互任務。

  • B/S:是WEB興起后的一種網絡結構模式,WEB瀏覽器是客戶端最主要的應用軟件。

  • 二、原理不同

  • C/S:客戶端運行應用程序,服務器端運行服務程序。應用程序向服務程序發出一個應用程序。

  • B/S:統一客戶端,將系統功能實現的核心部分集中到服務器,簡化系統的開發、維護和使用。只需在客戶機上安裝一個瀏覽器,如NetscapeNavigator或InternetExplorer,服務器就會安裝SQLServer、Oracle、MYSQL等數據庫。瀏覽器通過Web服務器與數據庫交互。

  • 三、優勢不同

  • C/S:可以充分發揮客戶端PC的處理能力,很多工作經過客戶端處理后可以提交給服務器。相應的優點是客戶端響應速度快。

  • B/S:總擁有成本低,維護方便,分布強,開發簡單。它可以在任何地方操作,而不需要安裝任何特殊的軟件。

  • 二、主頁面


    視頻演示:
    https://www.bilibili.com/video/BV1Dv41187eW?pop_share=1
    代碼下載:

    百度網盤鏈接:https://pan.baidu.com/s/1tpVFoOM5XcrKQbM7xf0HNA
    提取碼:8888

    或者源地址:https://www.codeproject.com/Articles/524120/A-Java-Chat-Application

    三、介紹

    ??在本文中,將演示一個聊天應用程序,它可以同時處理多個用戶。它還支持文件傳輸。

    它完全基于Java,由兩部分組成:jMessenger(客戶端應用程序)和jServer(服務器應用程序)。

    四、特征

  • 同時處理多個用戶
  • 支持公共和私人消息
  • 用戶注冊和登錄可用
  • 支持文件傳輸
  • 五、jServer

    ??jServer主要有兩個類分別處理連接和消息:
    在啟動時SocketServer單獨運行在一個線程中,它會監聽是否有客戶端連接服務器,一旦發現客戶端jServer就會創建一個單獨的線程去運行ServerThread。
    ??ServerThread創建后就會持續的監聽來自客戶端的消息,并將消息交由SocketServer處理。同樣,它支持將來自客戶端的消息轉發到其他客戶端。jServer將客戶端用戶名和密碼保存在data.xml中,以支持用戶注冊功能。

    // In ServerThread read the incoming message and hand it to SocketServerMessage msg = (Message) streamIn.readObject(); server.handle(ID, msg); .......// In SocketServer process the messages based on their typepublic synchronized void handle(int ID, Message msg){ if(msg.type.equals("login")){....}else id(msg.type.equals("message")){if(msg.recipient.equals("All")){ Announce("message", msg.sender, msg.content); }else{// Find the thread of recipient and forward it to him}} .......

    六、jMessenger

    ??jMessenger通過指定的ip地址和端口號連接到jServer。然后,到達的消息以及它們的發送者會顯示在留言板上。需要說明的是,在傳輸文件時,文件并不通過服務器,而是客戶端之間啟用單獨線程直接傳輸,這樣可以同時進行聊天和文件傳輸。jMessenger將消息記錄保存在History.xml中,可以查看聊天歷史記錄。

    當用戶想要發送文件時,首先他的請求是通過type消息發送的upload_req。收件人然后執行以下操作:

  • 接收方以類型為消息的形式發送其答復 upload_res
  • 如果請求被接受,那么收件人將打開一個新端口
  • 為了獲得肯定的答復,收件人的IP地址和端口號將被發回。
  • 發件人在收到肯定答復后將連接到此套接字并開始文件上傳
    這種方法的優點是客戶端可以同時聊天和傳輸文件。與消息不同,文件不會通過jServer。
  • // On recipient side, start a new thread for downloadDownload dwn = new Download(....); Thread t = new Thread(dwn); t.start(); send(new Message("upload_res", ui.username, dwn.port, msg.sender)); // Reply to sender with IP address and port number .........// On sender side, start a new thread for file upload// Connect to the port specified in reply Upload upl = new Upload(addr, port, ui.file, ui); Thread t = new Thread(upl); t.start();

    七、使用代碼

    代碼下載:點擊此處

    注意:一定要關防火墻

    https://blog.csdn.net/hanhanwanghaha寶藏女孩 歡迎您的關注!
    歡迎關注微信公眾號:寶藏女孩的成長日記
    讓這個可愛的寶藏女孩在努力的道路上與你一起同行!
    如有轉載,請注明出處(如不注明,盜者必究)

    7.1 導入項目后報錯情況

    用IDEA導入項目后java項目不能運行,像這樣

    7.2 解決辦法

    查看sdk是否設置: File > Project Structure > Project

    IDEA不能自動對源代碼識別出來src目錄,需要我們進行手動設置:
    src目錄=》右鍵 > make Directory as > Source Root

    于是我又報了一個錯:

    Cannot start compilation: the output path is not specified for module "ruanjianjiagou". Specify the output path in the Project Structure dialog.


    點擊OK
    在Modules設置里勾選”Inherit project compile path”

    設置Project中的”Project compiler output

    我在運行時又出現這樣的報錯

    lnformation: java:Errors occurred while compiling module 'ruanjianjiagou' lnformation: javac 1.8.0_191 was used to compile java sources Information: 2021/4/6 8:54 - Build completed with 1 error and 0 warnings in 5 s 190 msError: java:無效的源發行版: 13

    如圖:

    解決方式:選擇最上面一個,這里可以參考你自己當前已經可以運行的項目,選一樣的就好了。

    最后再重啟下項目

    參考:

  • https://zhidao.baidu.com/question/569834641.html
  • https://baike.baidu.com/item/C/S%E5%88%86%E5%B8%83%E5%BC%8F%E6%A8%A1%E5%BC%8F/15231117
  • https://www.codeproject.com/Articles/524120/A-Java-Chat-Application
  • https://blog.csdn.net/weixin_41431935/article/details/112846365
  • https://blog.csdn.net/hanhanwanghaha寶藏女孩 歡迎您的關注!
    歡迎關注微信公眾號:寶藏女孩的成長日記
    讓這個可愛的寶藏女孩在努力的道路上與你一起同行!
    如有轉載,請注明出處(如不注明,盜者必究)

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的C/S架构网络聊天软件——Java Chat Application 用java做一个聊天机器人的全部內容,希望文章能夠幫你解決所遇到的問題。

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