[ Pobierz całość w formacie PDF ]
.Ca³a procedura rozpoczyna siê od wyczyszczenia jego w³aœciwoœcireprezentuj¹cych adresatów poczty.W³aœciwoœci te s¹ nastêpnie inicjowanezawartoœci¹ kontrolek edycyjnych.W przeciwieñstwie do pól CC (ang.CarbonCopy) i BCC (ang.Blind Carbon Copy) w polu „Do” mo¿e znaleŸæ siê kilkaadresów, oddzielonych przecinkami lub spacjami — ich separacjê u³atwiaw³aœciwoœæ CommaText listy TStringList.W³aœciwoœæ Body reprezentuj¹ca treœæwiadomoœci „wype³niana” jest zawartoœci¹ kontrolki MessageMemo.W³aœciwoœæLocalProgram zawiera nazwê programu u¿ytego do wys³ania wiadomoœci; w naszymprzypadku informacja ta jest bez znaczenia i nazwa wspomnianego programu mo¿ebyæ dowolna.Je¿eli komponent NMSMTP1 po³¹czony jest aktualnie z jakimœ serwerem, nastêpujeroz³¹czenie i ponowne nawi¹zanie po³¹czenia, tym razem z serwerem okreœlonym naformularzu g³Ã³wnym Form1.Fizyczne przes³anie poczty wykonywane jest przezmetodê SendMail().Zale¿nie od ostatecznego rezultatu — bezb³êdnego przes³ania albo niepowodzenia— generowane jest jedno ze zdarzeñ OnSuccess albo OnFailure; ich obs³uga wnaszym przypadku ogranicza siê do wypisania stosownego komunikatu:void __fastcall TForm3::NMSMTP1Success(TObject *Sender){ShowMessage("Wiadomoœæ zosta³a wys³ana");Close();}void __fastcall TForm3::NMSMTP1Failure(TObject *Sender){ShowMessage("B³¹d - wiadomoœc nie zosta³a wys³ana");}Najprostsz¹ czynnoœci¹ jest niew¹tpliwie oprogramowanie klikniêcia w przycisk„Anuluj” — nale¿y wówczas po prostu zamkn¹æ formularz:void __fastcall TForm3::CancelButtonClick(TObject *Sender){Close();}Podobnie jak w przypadku formularza Form2, tak¿e deklaracja formularza Form3,zawarta w pliku nag³Ã³wkowym Unit3.h, musi zostaæ do³¹czona do pliku Unit1.cpp —w sposób uprzednio opisany.Po klikniêciu w przycisk „Nowa” formularza g³Ã³wnegonastêpuje wyœwietlenie formularza Form3 w trybie modalnym:void __fastcall TForm1::NewButtonClick(TObject *Sender){TForm3 *OutMail = new TForm3(NULL);OutMail->ShowModal();}Wiadomoœci pocztowe odczytywane przez nasz¹ aplikacjê z serwera nadal na nimpozostaj¹; znakomita wiêkszoœæ aplikacji komercyjnych oferuje opcjê usuwania zserwera przeczytanych wiadomoœci.Zainteresowani Czytelnicy mog¹ wzbogaciæ o têopcjê opisywany tu projekt — usuwania wiadomoœci z serwera dokonuje metodaTNMPOP3::DeleteMailMessage() z numerem wiadomoœci jako pojedynczym parametremwywo³ania; zale¿nie od wyniku operacji generowane jest jedno ze zdarzeñOnSuccess albo OnFailure (w kontekœcie komponentu TNMPOP3).Serwer HTTPNajpopularniejszym chyba protoko³em internetowych jest HTTP (ang.HypertextTransfer Protocol) — trudno by³oby dziœ spotkaæ u¿ytkownika komputera niepos³uguj¹cego siê jak¹œ odmian¹ przegl¹darki internetowej.Z punktu widzeniaarchitektury klient–serwer przegl¹darka taka pe³ni rolê klienta, „serwerem”jest natomiast ca³a sieæ.Aby zademonstrowaæ mo¿liwoœci protoko³u HTTPpowrócimy do naszego projektu ChatServer.bpr i wprzêgniemy weñ kilka elementówfunkcjonalnoœci charakterystycznych dla tego protoko³u, w szczególnoœci:zdalne sprawdzanie stanu serwerazdalne uruchamianie serwerauzyskiwanie listy aktualnie przy³¹czonych u¿ytkownikówDodawanie komponentu–gniazdaPo otwarciu projektu ChatServer.bpr dodamy do formularza jeszcze jedenkomponent TServerSocket, nadaj¹c mu nazwê HttpServer.Port dostêpu okreœlonyprzez jego w³aœciwoœæ Port mo¿na ustawiæ dowolnie — standardowym numerem portudla serwerów HTML jest 80; w naszym przypadku arbitralnie przyjmiemy wartoœæ8000.Konieczne jest tak¿e ustalenie adresu IP serwera, który ³atwo mo¿nauzyskaæ uruchamiaj¹c z linii poleceñ program ipconfig.Standardowo bie¿¹cykomputer (localhost) identyfikowany jest przez adres 127.1, lecz wprzypadku u¿ycia firewalla (lub innego rodzaju zabezpieczeñ) adres ten mo¿e byæinny.Po dokonaniu niezbêdnych ustawieñ nale¿y przypisaæ wartoœæ true w³aœciwoœciActive komponentu HttpServer.Obs³uga ¿¹dañ klientówChocia¿ pojêcie „serwera HTTP” kojarzy siê z wieloma skomplikowanymi us³ugamizwi¹zanymi m.in.ze zwrotnym przesy³aniem plików klientowi, nasz przyk³adowyserwer realizowaæ bêdzie jedynie trzy funkcje wymienione na wstêpie,mianowicie:uzyskiwanie informacji o stanie zdalnego serwera — ¿¹danie to ma postaæhttp://127.1:8000/Status.htm (pod warunkiem, i¿ adres 127.1identyfikuje lokalny komputer localhost);zdalne uruchamianie serwera — http://127.1:8000/Start.htm;uzyskiwanie listy po³¹czonych bie¿¹co u¿ytkowników —http://127.1:8000/Users.htm.Obs³uga ¿¹dania klienta odbywa siê w ramach zdarzenia OnClientConnectkomponentu HttpServer:Wydruk 12.5 Obs³uga ¿¹dania klienta przez serwer HttpServervoid __fastcall TForm1::HttpServerClientConnect(TObject *Sender,TCustomWinSocket *Socket){AnsiString aRequest, aResponse;aRequest = Socket->ReceiveText();LogMemo->Text = aRequest;if(aRequest.Pos("Status
[ Pobierz całość w formacie PDF ]