!
1. C/S概念 1.1 什么是C/S
C/S分布式模式是一個計算機術語。 C表示,S表示,C/S模式表示客戶端/服務器模式。 它是計算機軟件協同工作的一種模式,通常采用兩層結構。 服務器端負責數據管理,客戶端負責完成與用戶的交互任務。
1.2 C/S和B/S的區別
C/S模式是一個兩層結構的系統,第一層是在客戶端安裝客戶端應用程序,第二層是在服務器上安裝應用服務器。 C/S模式的工作過程中,客戶端程序請求,服務器程序接收并處理客戶端程序請求,并返回結果。
B/S模型,即瀏覽器/服務器模型,是在傳統二層C/S模型基礎上發展起來的一種新型網絡結構模型,其本質是三層C/S模型。
在用戶計算機上安裝瀏覽器軟件,在服務器上存儲數據,安裝WWW服務器、文件服務器等業務應用程序。 用戶通過瀏覽器訪問服務器,進行信息瀏覽、文件傳輸和電子郵件服務。
兩者的區別如下:
1. 參考不同
C/S:指客戶端/服務器模式。 它是計算機軟件協同工作的一種模式,采用兩層結構。 服務器端負責數據管理,客戶端負責完成與用戶的交互任務。
B/S:是WEB興起后的一種網絡結構模式,WEB瀏覽器是客戶端最重要的應用軟件。
二、原理不同
C/S:客戶端運行應用程序,服務器運行服務程序。 應用程序向服務程序發送申請。
B/S:統一客戶端,將系統功能實現的核心部分集中到服務器,簡化系統的開發、維護和使用。 只需要在客戶端電腦上安裝一個瀏覽器,比如或者,服務器端就會安裝,,,,MYSQL等數據庫。 瀏覽器通過Web服務器與數據庫進行交互。
3、優勢不同
C/S:可以充分發揮客戶端PC的處理能力,很多工作經過客戶端處理后可以提交給服務器。 相應的優點就是客戶響應速度快。
B/S:總體擁有成本低、維護方便、分發性強、開發簡單。 它可以在任何地方操作,無需安裝任何特殊軟件。
2. 主頁面
視頻演示:
代碼下載:
百度網盤鏈接:
提取碼:8888
或源地址:
3. 簡介
在本文中,將演示一個可以同時處理多個用戶的聊天應用程序。 它還支持文件傳輸。
它完全基于Java,由兩部分組成:(客戶端應用程序)和(服務器應用程序)。
4.功能特點同時處理多個用戶支持公共和私人消息用戶注冊和登錄可支持文件傳輸5.
有兩個主要的類分別處理連接和消息:
它在啟動時運行在一個單獨的線程中,它會監視是否有客戶端連接到服務器。 一旦找到客戶端,它就會創建一個單獨的線程來運行。
創建完成后,會繼續監聽客戶端發來的消息,并將消息交給處理。 同樣,它支持將消息從客戶端轉發到其他客戶端。 data.xml中保存客戶端用戶名和密碼,以支持用戶注冊功能。
// In ServerThread read the incoming message and hand it to SocketServer
Message msg = (Message) streamIn.readObject();
server.handle(ID, msg);
.......
// In SocketServer process the messages based on their type
public 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
}
}
.......
六,
通過指定的 IP 地址和端口號連接。 然后,傳入的消息和發送者會顯示在留言板上。 需要說明的是,傳輸文件時,文件不經過服務器,而是在客戶端之間啟用單獨的線程直接傳輸,這樣就可以同時進行聊天和文件傳輸。 將消息記錄保存為.xml,可以查看聊天記錄。
當用戶想要發送文件時,首先將通過類型消息發送他的請求。 然后接收者執行以下操作:
接收方以類型消息的形式發送回復。如果請求被接受,則接收方打開一個新端口。 對于肯定回復,接收者的 IP 地址和端口號將被發回。發送者收到肯定回復后將連接到此套接字并開始文件上傳
這種方式的優點是客戶端可以同時聊天和傳輸文件。 與消息不同,文件不會被傳遞。
// On recipient side, start a new thread for download
Download 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();
七、使用代碼
代碼下載:
注意:一定要關閉防火墻