Základ C# 25 – Užitočné triedy 4 – Čítanie a zápis na sieť [Network IO]

Či už chcete čítať z internetu, alebo len menšej LAN siete, .NET vám prináša mnoho pomocníkov.

V .NET frameworku nájdete niekoľko tried ktoré sa zaoberajú čítaním z internetu a siete, čo je v dnešnej dobe nevyhnutná súčasť nášho života. Väčšinu tried nájdete v mennom priestore System.Net, niektoré sa však nachádzajú aj v System.Net.Sockets.

Sťahovanie z HTTP

Pre jednoduché sťahovanie obsahu internetových stránok slúžia triedy HttpWebRequestHttpWebResponse. Pomocou nich môžete jednoducho stiahnuť súbory z internetu. Najprv je nutné vytvoriť request, čiže žiadosť – to spravíte metódou Create ktorá sa nachádza v triede WebRequest. jej výsledok musíte pretypovať na typ HttpWebRequest. Keď tent omáte môžete metódou GetResponse získať response, čiže odpoveď. Z nej už môžete jednoducho metódou GetResponseStream získať stream z ktorého údaje prečítate ako pri súbore.

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://stranka/subor");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
//Čítanie z siete
reader.Close();

 

Čítanie a zápis na FTP

Základné použitie FTP (File Transfer Protocol) je podobné ako pri HTTP. Namiesto HttpWebRequestu však používate FtpWebRequest. Na rozdiel od predošlého však je nutné špecifikovať operáciu ktorú chcete robiť a prihlasovacie údaje. Operáciu špecifikujete cez člena Method, pričom všetky metódy nájdete v statickej triede WebRequestMethods.Ftp. Prihlasovacie údaje nadstavíte cez člena Credentials, ktorému priradíte inštanciu tried NetworkCredential. Následne už postupujete ako pri Http.

FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create("ftp://adresa/subor");
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential("meno", "heslo");
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
StreamWriter writer = new StreamWriter(response.GetResponseStream());
//upload súboru
writer.Close();

Použitie protokolu TCP – vlastná sieťová komunikácia

Upload a Download súborov je síce užitočný, ale často budete musieť vytvoriť vlastný spôsob komunikácie medzi dvomi počítačmi. Na to budete potrebovať serverovú a klientovskú aplikáciu. Vďaka triedam TcpListenerTcpClient môžete spraviť jednoduchú funkčnú aplikáciu používajúcu protokol TCP.

Pre tvorbu serveru použijete práve triedu TcpListenet, ktorého parameter by mal byť typu IPEndPoint. V ňom špecifikujete na ktorom porte ma počúvať a z ktorých IP Adries. Väčšinou sa ako vstupná adresa používa IPAddress.Any, čo špecifikuje dostupnosť zo všetkých adries. Listener následne naštartujete metódou Start. Pomocou metódy Pending potom zistíte či sa na vás chce niekto napojiť. Na získanie klienta môžete použiť triedy AcceptTcpClientAcceptSocket poprípade ich asynchrónne varianty.

TcpListener listener = new TcpListener(new IPEndPoint(IPAddress.Any, 80));
listener.Start();
while (!listener.Pending()) ;
TcpClient client = listener.AcceptTcpClient();
//komunikácia s klientom
client.Close();
listener.Stop();

Pre napojenie na TCP server sa používa trieda TcpClient. Ten nemusí mať žiadne vstupné parametre, pretože server na ktorý sa chcete napojiť je špecifikovaný až v metóde Connect.

TcpClient client = new TcpClient();
client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 80));
Stream str = client.GetStream();
//komunikácia
client.Close();

Pokročilá komunikácia

Pokročilá komunikácia prebieha pomocou triedy Socket, pri ktorej máte plnú kontrolu nad odosielanými údajmi. Pri tvorbe Socketu špecifikujete jeho typ a ďalšie veci. Ak ho chcete použiť ako server, stačí priradiť adresu RemoteEndPoint a použiť metódu Listen, ak ako klient, použijete metódu Connect.

 Týmto sme pokryli základy sieťovej komunikácie a nabudúce si v poslednom diely povieme niečo o zvyšných triedach a metódach, ktoré sa vám môžu zísť.

Pridajte Komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *


The reCAPTCHA verification period has expired. Please reload the page.

Návrat hore