User Tools

Site Tools


tanszek:oktatas:informacios_rendszerek_integralasa:chatserver

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
tanszek:oktatas:informacios_rendszerek_integralasa:chatserver [2022/03/11 18:37] – külső szerkesztés 127.0.0.1tanszek:oktatas:informacios_rendszerek_integralasa:chatserver [2024/04/19 12:33] (current) knehez
Line 1: Line 1:
-===== Server Side =====+===== Chat GUI =====
  
 Készítsünk egy csoportos Chat vastag kliens alkalmazást. Alkalmazzuk a Java-RMI technológiát. Készítsünk egy csoportos Chat vastag kliens alkalmazást. Alkalmazzuk a Java-RMI technológiát.
-Hozzunk létre két projektet az eclipse-ben a kliens és a szerver számára.+Hozzunk létre két projektet az eclipse-ben a kliens és a szerver számára. Az alábbi interakciós diagramm bemutatja az elvi működést.
  
 +<mermaid>
 +sequenceDiagram
 +    participant U as User
 +    participant UI as ChatUI
 +    participant CC as ChatClient
 +    participant CS as ChatServer
 +    participant IC as IChatClient
 +    participant IS as IChatServer
 +
 +    U->>UI: Starts Application
 +    UI->>CC: Creates ChatClient
 +    CC->>IS: Tries to connect
 +    IS->>CS: Login request
 +    CS->>IC: Checks if client can connect
 +    IC->>CC: Connection successful
 +    CC->>UI: Update UI (Connected)
 +    UI->>U: Show connected status
 +    
 +    U->>UI: Enter message
 +    UI->>CC: Send message
 +    CC->>IS: Publish message
 +    IS->>CS: Publish message to all clients
 +    CS->>IC: Iterate over clients
 +    IC->>CC: Display message
 +    CC->>UI: Update UI with new message
 +    UI->>U: Show new message
 +
 +    U->>UI: Disconnect
 +    UI->>CC: Disconnect from server
 +    CC->>IS: Logout request
 +    IS->>CS: Remove client from list
 +    CS-->>IC: Update client list
 +    IC->>CC: Acknowledge disconnect
 +    CC->>UI: Update UI (Disconnected)
 +    UI->>U: Show disconnected status
 +</mermaid>
 +
 +Készíthetünk egy másik diagrammot is a működés bemutatásásra:
 +
 +  * **ChatUI** a felhasználói interfész, amely közvetlenül kommunikál a ChatClient-tel.
 +  * **ChatClient** a kliens oldali logika, amely megvalósítja az IChatClient interfészt.
 +  * **Java RMI Registry** a szolgáltatások nevének feloldására szolgál, amit a ChatClient használ a IChatServer interfész elérésére.
 +  * **IChatServer** az interfész, amelyen keresztül a ChatClient kommunikál a ChatServer-rel.
 +  * **ChatServer** a szerver oldali logika, amely megvalósítja az IChatServer interfészt.
 +  * **Client List** a csatlakoztatott kliensek listája a szerveren.
 +  * **User Interface** ábrázolja a felhasználói felület komponenseit, amelyek interakcióban állnak a felhasználóval.
 +E
 +z a diagram bemutatja a rendszer összetevőinek kapcsolódási és kommunikációs struktúráját, beleértve a kliens és szerver közötti interakciókat.
 +
 +<mermaid>
 +graph TD
 +    A[ChatUI] --> B[ChatClient]
 +    B --> C{Java RMI Registry}
 +    B -->|lookup| D[IChatServer]
 +    D --> E[ChatServer]
 +    E --> F[IChatClient]
 +    F --> B
 +    D -.-> G[Client List]
 +    E --> G
 +
 +    A -.-> H[User Interface]
 +    H --> A
 +
 +    C -.->|registers| E
 +
 +    style A fill:#f9f,stroke:#333,stroke-width:4px
 +    style B fill:#bbf,stroke:#f66,stroke-width:2px,stroke-dasharray: 5, 5
 +    style C fill:#fea,stroke:#333,stroke-width:2px
 +    style D fill:#bbf,stroke:#f66,stroke-width:2px,stroke-dasharray: 5, 5
 +    style E fill:#f99,stroke:#333,stroke-width:4px
 +    style F fill:#bbf,stroke:#f66,stroke-width:2px,stroke-dasharray: 5, 5
 +    style G fill:#dff,stroke:#333,stroke-width:2px
 +    style H fill:#fff,stroke:#333,stroke-width:2px
 +</mermaid>
 ==== Project 1: ChatServer ==== ==== Project 1: ChatServer ====
  
 1.) IChatClient 1.) IChatClient
 +<sxh java>
   import java.rmi.Remote;   import java.rmi.Remote;
   import java.rmi.RemoteException;   import java.rmi.RemoteException;
Line 15: Line 89:
         public String getName() throws RemoteException;         public String getName() throws RemoteException;
   }   }
 +</sxh>
  
 2.) IChatServer 2.) IChatServer
 +<sxh java>
   import java.rmi.Remote;   import java.rmi.Remote;
   import java.rmi.RemoteException;   import java.rmi.RemoteException;
Line 29: Line 104:
       public ArrayList<IChatClient> getConnected() throws RemoteException;       public ArrayList<IChatClient> getConnected() throws RemoteException;
   }   }
 +</sxh>
 3.) ChatServer 3.) ChatServer
 +<sxh java>
   import java.rmi.RemoteException;   import java.rmi.RemoteException;
   import java.rmi.server.UnicastRemoteObject;   import java.rmi.server.UnicastRemoteObject;
Line 67: Line 142:
       }       }
   }   }
 +</sxh>
  
 4.) StartServer 4.) StartServer
 +<sxh java>
   import java.rmi.Naming;   import java.rmi.Naming;
      
Line 85: Line 161:
       }       }
   }   }
 +</sxh>
  
  
Line 96: Line 172:
  
 1.) ChatClient 1.) ChatClient
 +<sxh java>
   import java.rmi.RemoteException;   import java.rmi.RemoteException;
   import java.rmi.server.UnicastRemoteObject;   import java.rmi.server.UnicastRemoteObject;
Line 121: Line 197:
       }       }
   }   }
 +</sxh>
  
 2.) ChatUI 2.) ChatUI
 +<sxh java>
   import java.awt.BorderLayout;   import java.awt.BorderLayout;
   import java.awt.GridLayout;   import java.awt.GridLayout;
Line 273: Line 350:
       JFrame frame;       JFrame frame;
   }   }
 +</sxh>
 +
 +**Feladat 1.**: implementáljuk, hogy új kliensek belépése esetén, a régiek is megkapják az új belépő nevét. 
  
-**Feladat 1.**: implementáljuk, hogy új kliensek belépése esetén, a régiek megkapják teljes felhasználó listát+**Feladat 2.**: implementáljuk továbbá, hogy kilépés esetén a felhasználók törlődjenek
tanszek/oktatas/informacios_rendszerek_integralasa/chatserver.1647023828.txt.gz · Last modified: 2022/03/11 18:37 by 127.0.0.1