Ohjelmointi

Kuinka työskennellä C # -liitäntöjen kanssa

Prosessien välinen viestintä on kyky vaihtaa tietoja kahden tai useamman yhdistetyn prosessin välillä, ja se voidaan saavuttaa pistorasioilla. Kun palvelimen ja asiakkaan välinen yhteys, ts. Palvelinprosessi ja asiakasprosessi, on muodostettu, he voivat kommunikoida tietojen vaihtamiseksi pistorasioiden avulla.

Liitäntä on kahden verkon kautta kulkevan prosessin välisen kaksisuuntaisen tiedonsiirron loppupiste. Voit hyödyntää System.Net- ja System.Net.Sockets-nimitiloja toimiakseen C # -liitäntöjen kanssa. Ensimmäistä käytetään korkean tason toimintoihin pistorasioiden avulla, jälkimmäistä käytetään kaikkiin matalan tason toimintoihin, kun työskentelet pistorasioiden kanssa.

Työskennellessäsi pistorasioiden kanssa, voit käyttää joko TCP / IP-tiedonsiirtomekanismeja (Transmission Control Protocol / Internet Protocol) tai UDP / IP (User Datagram Protocol / Internet Protocol). Jos haluat vaihtaa tietoja kahden tai useamman prosessin välillä verkon yli, voit hyödyntää TCP- ja UDP-siirtoprotokollia. Vaikka TCP (Transmission Control Protocol) on turvallinen ja luotettava yhteyspohjainen protokolla, UDP (User Datagram Protocol) on suhteellisen vähemmän turvallinen tai luotettava, nopea ja yhteydetön protokolla.

Seuraava koodiluettelo kuvaa, kuinka voit hyödyntää System.Net.Dns-luokkaa järjestelmän IP-osoitteen näyttämiseen.

public static void Main (merkkijono [] args)

        {

merkkijono isäntänimi = Dns.GetHostName ();

yrittää

            {

IPAddress [] ipAddress = Dns.Resolve (hostName) .AddressList;

foreach (IP-osoitteen osoite ip-osoitteessa)

Console.WriteLine ("{0} / {1}", isäntänimi, osoite);

            }

saalis (poikkeus ex)

            {

Console.WriteLine ("Tapahtui virhe:" + ex.Message);

            }

Konsoli.Lue ();

        }

Katso yllä oleva koodiluettelo. Vaikka Dns.GetHostName () -menetelmä palauttaa järjestelmän nimen, Dns.Resolve () -menetelmää käytetään hakemaan IPHostEntry -tyyppinen taulukko.

Verkkotietojen haku

System.Net.NetworkInformation-nimiavaruutta voidaan käyttää verkon metatietojen (eli verkon muutosten, verkkotapahtumien, ominaisuuksien jne.) Hakemiseen C #: sta. Esimerkiksi, jos haluat tarkistaa, onko verkkoyhteys käytettävissä, voit käyttää GetIsNetworkAvailable () -menetelmää alla esitetyllä tavalla.

System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable ();

Näin voit kutsua tätä menetelmää koodissasi.

Totuusarvo networkAvailable = NetworkInterface.GetIsNetworkAvailable ();

Jos haluat seurata IP-osoitteen muutoksia, voit käyttää seuraavia NetworkChange-luokan tapahtumia.

System.Net.NetworkInformation.NetworkChange.NetworkAvailabilityChanged

System.Net.NetworkInformation.NetworkChange.NetworkAddressChanged

Voit hakea verkkoliitäntöjen tietoja käyttämällä NetworkInterface-luokan GetAllNetworkInterfaces () -menetelmää.

NetworkInterface [] networkInterfaces = NetworkInterface.GetAllNetworkInterfaces ();

Kun olet hakenut luettelon kaikista verkkoliitännöistä, voit käyttää seuraavaa koodipalaa näyttääksesi jokaisen verkkoliitännän tiedot konsolissa.

foreach (NetworkInterface networkInterface in networkInterfaces)

            {

Console.WriteLine ("Verkkotunnus:" + networkInterface.Id);

Console.WriteLine ("Verkon nimi:" + networkInterface.Name);

Console.WriteLine ("Verkkokuvaus \ n:" + networkInterface.Description);

            }

Tässä on täydellinen koodiluettelo viitteellesi.

staattinen void Main (merkkijono [] args)

        {

NetworkInterface [] networkInterfaces = NetworkInterface.GetAllNetworkInterfaces ();

foreach (NetworkInterface networkInterface in networkInterfaces)

            {

Console.WriteLine ("Verkkotunnus:" + networkInterface.Id);

Console.WriteLine ("Verkon nimi:" + networkInterface.Name);

Console.WriteLine ("Verkkokuvaus \ n:" + networkInterface.Description);

            }

Konsoli.Lue ();

        }

Asiakas-palvelin-ohjelmointi

Kun työskentelet verkko-ohjelmoinnin kanssa TCP: n avulla, sinun on yleensä luotava palvelinprosessi, jonka pitäisi alkaa tietystä portista, ja myös asiakasprosessi, joka voi alkaa missä tahansa portissa ja lähettää yhteyspyynnön palvelimelle. Palvelinprosessi sen aloittamisen jälkeen kuuntelee saapuvia yhteyspyyntöjä siinä portissa, johon se on aloitettu. Seuraava koodinpätkä kuvaa, kuinka voit hyödyntää System.Net.Sockets.TcpListener-luokkaa ja käyttää sitä yhdessä socket-luokan kanssa.

TcpListener kuuntelija = uusi TcpListener (1234);

kuuntelija.Start ();

Socket socket = kuuntelija. AcceptSocket ();

Stream networkStream = uusi NetworkStream (socket);

Seuraava koodinpätkä kuvaa, kuinka socket-asiakas voi muodostaa yhteyden palvelimeen TCP-protokollan avulla.

String ipAddress = "määritä IP-osoite tähän";

System.Net.IPAddress ipAddress = System.Net.IPAddress.Parse (ipAddress);

System.Net.IPEndPoint remoteEndPoint = uusi IPEndPoint (ipAddress, 9000);

socketClient.Connect (remoteEndPoint);

Voit lähettää tietoja palvelimelle asiakkaalta käyttämällä seuraavaa koodinpätkää.

yrittää

{

Merkkijonoteksti = "Hei maailma!";

tavu [] data = System.Text.Encoding.ASCII.GetBytes (teksti);

socketClient.Send (data);

}

salpa (SocketException se)

{

// Kirjoita poikkeusten käsittelykoodi tähän

}

Liitäntäluokan vastaanottoa () -menetelmää voidaan käyttää datan vastaanottamiseen. Näin voit käyttää sitä tietojen hakemiseen pistorasiasta. Huomaa, että sekä Lähetys- että Vastaanottomenetelmät estävät, ts. Ne estäisivät parhaillaan suoritettavan ketjun, kunnes tiedot on lähetetty tai vastaanotettu.

tavu [] data = uusi tavu [1024];

int i = socketClient.Receive (data);

Huomaa, että sinun tulisi sisällyttää System.Net- ja System.Net.Sockets-nimitilat ohjelmallesi toimimaan pistorasioiden kanssa.

käyttämällä System.Net;

käyttäen System.Net.Sockets;