1 / 13

Projektni rad Chat server i klijent

Projektni rad Chat server i klijent. Radevic Zarko II-9/2006 Jankovic Bojan 124/2005. Uvod.

benito
Download Presentation

Projektni rad Chat server i klijent

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Projektni radChat server i klijent Radevic Zarko II-9/2006 Jankovic Bojan 124/2005

  2. Uvod Ovaj projekat predstavlja program za komunikaciju (chatovanje) izmedju dva korisnika, klijenta i servera. Prenos poruka se odvija preko soketa, TCP vezom. Ova verzija omogućava naizmenično slanje i primanje poruka.Program je baziran na Csocket MFC klasi I moze se koristiti I u lokalnoj mrezi I na internetu

  3. Server– prihvata konekcije od klijenata • – opslužuje više klijenata istovremeno • – prihvata poruku od klijenta i prosleđuje je • ostalim klijentima koji su povezani na njega Klijent– Šalje zahtev za konekcijom serveru • – šalje poruku serveru • – prima poruke od servera ( tj. od ostalih klijenata )

  4. Server otvara prvi konekciju,a zatim klijent uspostavlja vezu sa serverom pozivom programa i IP adresom servera kao argumentom edit box kontrole. Tek tada je moguća komunikacija.Program se sastoji iz tri klase:CNDKServer,CNDKClient, CNDKMessage

  5. Server Atributi: • BOOL IsStarted() const; • long GetPort() const; • long GetNbUsers() const; • void GetUserIds(CLongArray& alIds) const;

  6. Operacije: • BOOL StartListening(long lPort); • void Stop(); • BOOL SendMessageToUser(long lUserId, CNDKMessage& message); • BOOL SendMessageToAllUsers(CNDKMessage& message); • BOOL SendMessageToSomeUsers(const CLongArray& alUserIds, CNDKMessage& message); • BOOL SendMessageToAllUsersExceptFor(long lUserId, CNDKMessage& message); • BOOL SendMessageToAllUsersExceptFor(const CLongArray& alUserIds, CNDKMessage& message); • BOOL DisconnectUser(long lUserId); • void DisconnectAllUsers(); • BOOL PingUser(long lUserId); • void PingAllUsers();

  7. Klijent Atributi: • BOOL IsConnected() const; • BOOL GetIpAndPort(CString& strIp, long& lPort) const;

  8. Operacije: • BOOL OpenConnection(const CString& strServerIp, long lPort); • void CloseConnection(); • BOOL SendMessageToServer(CNDKMessage& message); • BOOL PingServer();

  9. CNDKMessage • enkapsulacija podataka koji su poslati I primljeni od strane klijenta I servera Atributi: • void SetId(long lId); • long GetId() const; • int GetNbElements() const;

  10. Operacije: • void Add(TYPE typeData); • void SetAt(long lIndex, TYPE typeData); • void GetAt(long lIndex, TYPE& typeData) const; • void GetNext(TYPE& typeData);

  11. Kod-Klijent <PRE>void CChatClientDlg::OnButtonSend() { if (UpdateData(TRUE)) { //Kreiraj poruku sa jedinstvenim ID-em-chat text CNDKMessage message(ChatText); // Dodaj podatke u poruku message.Add(m_strChatInput); // Posalji poruku serveru SendMessageToServer(message); // Update UI(user interface) dijaloga AddText(m_strChatInput); m_strChatInput.Empty(); UpdateData(FALSE); } } </PRE>

  12. Kod-Server <PRE id=pre1 style="MARGIN-TOP: 0px">void CChatServerDlg::OnMessage(long lUserId, CNDKMessage& message) { switch (message.GetId()) { //... case ChatText: { CString strNickname; // preuzmi nickname koji se nalazi u mapi m_mapIdsNicknames.Lookup(lUserId, strNickname); CString strText; // Izvuci tekst koji je enkapsuliran u poruci message.GetAt(0, strText); // Update UI dijaloga AddText(strNickname + _T(": ") + strText); // Pripremi poruku message.SetAt(0, strNickname); message.SetAt(1, strText); // Posalji opruku svim ostalim korisnicima SendMessageToAllUsersExceptFor(lUserId, message); } break; //... } }</PRE>

More Related