160 likes | 286 Views
Singidunum Chat CHAT APLIKACIJA. STUDENTI : Maslov a ri ć Ksenija 50/2005 Kovačević Ivan 65/2005 Dešić Marko 157/2005 Al e mpijević Nevenka 196/2005 Ranković Žaklina 198/2005. SADR ŽAJ:. O APLIKACIJI SEGMENTI KODA IZGLED APLIKACIJE I NAČIN RADA IMPLEMENTACIJA FTP
E N D
Singidunum ChatCHAT APLIKACIJA STUDENTI: Maslovarić Ksenija 50/2005 Kovačević Ivan 65/2005 Dešić Marko 157/2005 Alempijević Nevenka 196/2005 Ranković Žaklina 198/2005
SADRŽAJ: • O APLIKACIJI • SEGMENTI KODA • IZGLED APLIKACIJE I NAČIN RADA • IMPLEMENTACIJA FTP • OBJASNJENJE IMPLEMENTACIJE
O APLIKACIJI • APLIKACIJA HYPER CHAT NAPRAVLJENA JE U MICROSOFT FOUNDATION CLASS-U, TAKO DA KORISTI GOTOVE FUNKCIJE • OSNOVNA APLIKACIJA SASTOJI SE OD FAJLOVA: • MY SOCKET.CPP KOJI OTVARA I ZATVARA SOCKET-E • HYPERCHAT.CPP KOJI INICIJALIZUJE APLIKACIJU • HYPERCHATDLG.CPP KOJI SADRŽI DEFINICIJU TOKA PROGRAMA
HEDERI HyperChat.h HyperChatDlg.h MySocket.h Resource.h StdAfx.h
NEKE OD FUNKCIJA INITINSTANCE *InitInstnace je funkcijatipa BOOL. akoprilikominicijalizacijevrativrednostrazlicituod 0 znacida je inicijalizacijauspesna, a u suprotnomvracavrednost 0. Obziromda Windows operativnisistemdozvoljavaradsa vise instancijedneaplikacijaWinMainpozivafunkcijuInitInstancekada god aplikacijapokrenenovuinstancu Inicijalizacijaaplikacijevrsi se dvaputa: jednomkada se pokrece program ikada se izvrsavakopijaprograma. ONSYSCOMMAND *Framework pozivaovufunkcijukadakorisnikodaberekomandusamenija, ilikadaodabere minimize ili maximize opciju DODATAEXCHANGE *DoDataExchange je funkcijakoju framework pozivakako bi se razmenilipodaciirazmenabilapotvrdjena DoDataExchange je jefunkcijatipavoidciji je parametar pointer naobjekatCDataExchange U nasemprogramu je DoDataExchangeizvedenaizklaseCDialogcime se omogucavaautomatskarazmenapodatakaipotvrda u framework-u.
DELOVI KODA MySocket.cpp void CMySocket::SetParent(CDialog *pWnd) { // Setter medlemspekeren m_pWnd = pWnd; } void CMySocket::OnAccept(int nErrorCode) { // Hvis ingen feil: if (nErrorCode == 0) // kaller dialogens OnAccept funksjon ((CHyperChatDlg*)m_pWnd)->OnAccept(); } void CMySocket::OnConnect(int nErrorCode) { if (nErrorCode == 0) ((CHyperChatDlg*)m_pWnd)->OnConnect1(); } void CMySocket::OnSend(int nErrorCode) { if (nErrorCode == 0) ((CHyperChatDlg*)m_pWnd)->OnSend(); } void CMySocket::OnClose(int nErrorCode) { if(nErrorCode == 0) ((CHyperChatDlg*)m_pWnd)->OnClose(); } void CMySocket::OnReceive(int nErrorCode) { if(nErrorCode == 0) ((CHyperChatDlg*)m_pWnd)->OnReceive(); } HyperChatDlg.cpp void CHyperChatDlg::OnConnect() { UpdateData(TRUE); GetDlgItem(IDC_CONNECT)->EnableWindow(FALSE); GetDlgItem(IDC_IP)->EnableWindow(FALSE); GetDlgItem(IDC_PORT)->EnableWindow(FALSE); GetDlgItem(IDC_NICK)->EnableWindow(FALSE); GetDlgItem(IDC_CLIENT)->EnableWindow(FALSE); GetDlgItem(IDC_SERVER)->EnableWindow(FALSE); GetDlgItem(IDC_STATICTYPE)->EnableWindow(FALSE); GetDlgItem(IDC_STATICIP)->EnableWindow(FALSE); GetDlgItem(IDC_STATICPORT)->EnableWindow(FALSE); GetDlgItem(IDC_STATICNICK)->EnableWindow(FALSE); if (m_Client == 0) { // initsialiserer socketen m_sConnectSocket.Create(); // Connecter til serveren m_sConnectSocket.Connect(m_IP, m_Port); m_Status = "Connecting..."; UpdateData(FALSE); } else { m_sListenSocket.Create(m_Port); m_sListenSocket.Listen(); m_Status = "Waiting for connection..."; UpdateData(FALSE); } }
AFX I MFC • AFXWIN.H JE HEDERKOJI PRIPADA OSNOVNOJ KLASI CWINAPP, I SADRŽI STANDARDNE KOMPONENTE KOJE KORISTI MFC • UVOĐENJE AFX HEDERA OMOGUĆAVA FUNKCIJAMA KOJE SU ČALNICE OSNOVNE KLASE DA INICIJALIZUJU APLIKACIJU • OBJEKTI IZVEDENI IZ CWINAPP SU GLOBALNE PROMENLJIVE • HEADER FAJLOVI KOJI PODRŽAVAJU WINDOWS SE UKLJUČUJU U PROJEKTE RAĐENE U MFC UVOĐENJEM PREDPROCESORSKIH DIREKTIVA U HEADER FAJLU STDAFX.H
AFX I MFC • POKRETANJEM AFXWIN.H AUTOMATSKI SE POKREĆE I AFXRES (FAJLOVI SA EKSTENZIJOM .RC) KOJI PREDSTAVLJAJU RESOURCE HEDERE • MFC JE BIBLIOTEKA KOJA SADRŽI VIŠE OD 200 KLASA • KROZ MFC DEKLARIŠU SE I MAKROI, KOJI SE UOBIČAJENO NALAZE NA KRAJU DEFINICIJE KLASE IZMEĐU // ...// • MAKROI PREDSTAVLJA NEKU VRSTU VIRTUALNIH FUNKCIJA U C++ • KLASA CFTPFILEFIND SLUŽI ZA PRETRAGU FAJLOVA NA FTP SERVERIMA
IZGLED APLIKACIJE Ovde birate da li želite da budete KLIJENT ili SERVER Unos IP adrese Komunikacioni port Vaš nadimak na chat-u Konektovanje/ Kreiranje servera Polje za poruke Slanje i primanje fajla preko FTP-a
SOCKET • SOCKET PREDSTAVLJA OBJEKAT SOCKET KLASE KOJI OMOGUĆAVA USPOSTAVLJANJE KOMUNIKACIJE IZMEĐU DVA RAZLIČITA PORTA NA MREŽI • DA BI SE KONEKCIJA IZMEĐU DVA PORTA USPOSTAVILA POTREBNO JE KREIRATI SOCKET I VEZATI DVE TACKE PREKO BIND METODA • VEZA IZMEĐU DVA PORTA NA MREŽI USPOSTAVLJA SE PREKO CONNECT METODA
FTP-File Transfer Protocole • FTP SLUŽI ZA PRENOS FAJLOVA IZMEĐU DVE TAČKE NA MREŽI • TCP ZAHTEVA DVA SETA PODATAKA-IP ADRESU I BROJ PORTA- PRILIKOM IZVRŠEN PROGRAMA POTREBNO JE, OSIM TAČNE PUTANJE ZA PRENOS, UNETI I IP ADRESU I PORT • UNOŠENJEM IP ADRESE, LOCIRA SE RAČUNAR NA MREŽI, DOK SE UNOŠENJEM ISPRAVNOG PORTA OMOGUĆAVA KONEKCIJA, ODNOSNO KONTEKTOVANJE SE PRAVOM APLIKACIJOM
Literatura NUMERICAL SIMULATIONS AND CASE STUDIES/WILEY INTERSCIENCE MICROSOFT VISUAL C++.NET PROFESSIONAL PROJECTS/SRIPRIYA AND SAI KISHORE TCP/IP Application Layer protocols for embedded Systems/M.Tim.Jones www.codeproject.com