Programujeme v jazyku C# II. – Novinky III.

Michal Čižmár  /  30. 11. 2005, 00:00

Toto je posledný diel o novinkách. V predchádzajúcich dvoch som sa zaoberal hlavne triedou Console (pretože sme ju do teraz využívali najviac). Dnešný diel je vhodný aj pre viac pokročilých programátorov. Pozrieme sa na dve nové triedy : SmtpClient a Ping.

Je možné, že začiatočníci nebudú dnes presne rozumieť ako vlastne fungujú uvedené príklady, pretože sme sa nevenovali ešte programovaniu sieťových aplikácii (aj to príde ak bude záujem), ale o to budú príklady zaujímavejšie a priamo použiteľné.

>>Čo je to Ping?

Je to jedna z funkcií ICMP (Control Message Protocol) protokolu, ktorá umožňuje testovať, či vzdialený počítač je pripojený na internet (sieť). Hlavným parametrom tejto funkcie je IP adresa druhého PC.

V jednoduchosti povedané : vyšlete nejaké ICMP protokolom (alebo Vami) stanovené dáta (echo request, 32bytov) na zvolené PC a to ak je pripojené pošle späť kladnú odpoveď (echo reply). Tým môžete overiť či je druhé PC pripojené a aj aké kvalitné spojenie má v závislosti na tom ako rýchlo dostanete ping odpoveď.

Najjednoduchšie povedané: Akoby ste niekoho prezvonili mobilom, ale nenadviažete spojenie. Pozdravujem Vila Š.:-), ktorý je v tomto preborník.

>>Pingnite sami seba!

Ping je vstavaný aj priamo vo Windows či Linuxe. Poklikajte postupne:

Start-> Run -> Napíšte cmd -> Otvorí sa konzola -> napíšte ping 127.0.0.1


Toto Vám bude fungovať aj keď nemáte internet pretože IP adresa 127.0.0.1 reprezentuje tak či tak len Váš počítač (spätná slučka). Ak však máte počítač s internetom môžete vyskúšať pingnúť aj napríklad : ping inet.sk

>>Naprogramujte si vlastný “pingovací“ program v C# !

Príklad nebudem zvlášť rozoberať, je dostatočne okomentovaný. Keď budeme brať sieťové aplikácie, tak si jednotlivé príkazy samozrejme vysvetlím podrobne.

Príklad 1.

using System;
using
System.Net.NetworkInformation;
using
System.Net;

class
OzajJednoduchyPing // oproti v1.1 :-)
{
static void Main(string[] args)
{
string inAddress;
Console.Write("Zadajte IP adresu:");
inAddress = Console.ReadLine();

// na zaciatok si vytvorime instanciu
// triedy Ping
Ping myPing = new Ping();

// Prekonvertujeme si IP adresu zo stringu
IPAddress ipAdress = IPAddress.Parse(inAddress);

// Vysleme poziadavku na odozvu
// a zachytime vystup do premennej reply
PingReply reply = myPing.Send(ipAdress);

Console.WriteLine("Status: {0}",reply.Status);

Console.ReadKey(false);

}
}
}

Príklad na stiahnutie (source + exe)

Ako vidíte “pingnút“ iné PC je v .NET Framework v 2.0 easy :-) Príklad je veľmi jednoduchý. Ak Vás zaujal, odporúčam Vám pozrieť ešte triedu PingOptions, kde sa dajú nastaviť také veci ako TTL (time to live), alebo povolenie fragmentácie.

>>A ten druhý sľúbený príklad ?
Ďalšou triedou, ktorá pribudla je SmtpClient. Je potrebné ju trochu viac nakonfigurovať ako Ping, ale aj tak je to stále obrovská pomoc pre programátorov.

SmtpClient-a nemusíme využívať iba priamo v programe, ktorý slúži na odosielanie e-mailov. Túto triedu by som napr. využil v programe, ktorý v prípade chyby alebo inej nastavenej udalosti kontaktuje administrátora, či priamo výrobcu programu a pošle im e-mail o udalosti, ktorá ho vyvolala.

Napr. to poznáte z Windows, ktorý sa chce „pochlapiť“ každým úspešne spadnutým programom Billovi.:-), ale zároveň tieto informácie pomáhajú čo najskôr opravovať chyby rôznymi patchmi, čo je fajn.

>>Urobte si vlastný Outlook v C# !
Tento príklad som čo najviac osekal, takže ak chcete, pre hlbšie pochopenie si pozrite veľmi dobre spracovanú dokumentáciu v rámci .NET Framework SDK.

Príklad je tak isto dobre okomentovaný.

Budeme využívať hlavne tieto triedy:
>> SmtpClient -
prostriedok na odosielanie e-mailov
>> MailAddress -
dobre zvolený názov triedy hovorí a všetko
>> MailMessage -
text správy atď.

Príklad 2.


using System;
using
System.Net;
using
System.Net.Mail;
using
System.Net.Mime;
using
System.Threading;
using
System.ComponentModel;

class
MyOutLokk
{
static void Main()
{
// Trieda, ktora data odosle
SmtpClient client = new SmtpClient("server");

// Trieda zapúzdrujúca e-mail adresu
MailAddress od = new MailAddress("asdf@asdf.sk");
MailAddress komu = new MailAddress("majl@server");

//Zapúzdruje text
MailMessage message = new MailMessage(od, komu);

// Nastavenie predmetu e-mailu
message.Subject = " Pokusny majl";

// Samotny text e-mailu
message.Body = " Prave si uspesne rozbehal"+
"smtp Klienta";


// Toto je niekedy porebne pridat
// aby server prijal majl
client.UseDefaultCredentials = true;

// ALELUJA
client.Send(message);

}
}

Príklad na stiahnutie (source + exe)


Ako dôkaz prikladám screenshot, že taký jednoduchý program dokáže naozaj odosielať e-maily. Prosím, nevyužívajte na testovanie tohto programu môj e-mail :-))

>>Záver
Dúfam, že sa Vám dnešný diel páčil a zároveň sa zväčšil fanklub jazyka C# :-) Tieto tri diely sa zaoberali len malým výňatkom z množiny pridaných tried a funkcií. Zároveň do C# pribudla aj nová syntax, o ktorej si budeme hovoriť v ďalších dieloch.

>>Otázky, pripomienky a konštruktívnu kritiku píšte do diskusie alebo na môj e-mail.

Michal Čižmár

micitn@orangemail.sk

Neprehliadnite: