© best_vector/Shutterstock.com
Teil 3: Socket-Kommunikation mit UDP

Socket für Flaschenpost


Im vorigen Teil der Serie haben wir einen Client und einen Server über TCP-Sockets miteinander kommunizieren lassen. Damals haben wir uns weder mit dem Auflösen von URLs noch mit UDP beschäftigt. Es ist nun an der Zeit, das nachzuholen.

Zuerst wollen wir uns den URLs zuwenden. Wie schon in Teil 1 festgestellt, sind IPv4-Adressen alles andere als leicht zu merken. Ganz ehrlich: www.tamoggemon.com ist um einiges leichter zu merken als 173.194.35.147. Die bis zu 128 Bit langen IPv6-Adressen spielen dann noch eine Ebene darüber – kurz gesagt: DNS macht Sinn.

Auflösungserscheinungen…

Der Vorgang des Beschaffens der zu einem URL zugehörigen IP-Adresse wird im Englischen als „resolve“ bezeichnet – die deutsche Übersetzung „auflösen“ ist weniger weit verbreitet, kommt aber auch immer wieder in Dokumenten vor.

Unser Beispiel SuSDNS ist relativ simpel: Es besteht aus einer Textbox, in die der Endanwender den zu bearbeitenden URL eingibt. Nach einem Klick auf Go startet der Auflösungsprozess, dessen Resultate in einer zweiten Textbox ausgegeben werden. Der dafür zuständige Code ist sehr primitiv (Listing 1).

Listing 1

private void CmdLos_Click(object sender, EventArgs e) { IPAddress[] ips; ips = Dns.GetHostAddresses(TxtURL.Text); TxtResult.Text = "GetHostAddresses liefert " + Convert.ToString(ips.Length) + " Einträge\r\n"; foreach (IPAddress i in ips) { TxtResult.Text = TxtResult.Text + i.ToString() + "\r\n"; } }

Interessant ist daran vor allem, dass die Methode Get­HostAddresses mehr als nur eine IP-Adresse zurückliefern kann. Das ist legal – DNS erlaubt es, zu einem URL mehrere Adressen zu hinterlegen.

Die Abbildungen 1 und 2 zeigen zwei Auflösungsprozesse. Der eine liefert nur eine IP-Adresse zurück, der zweite gleich fünf.

hanna_netz_1.tif_fmt1.jpgAbb. 1: Dieser URL hat nur eine IP-Adresse
hanna_netz_2.tif_fmt1.jpgAbb. 2: Hier gibt es gleich fünf

Die Methode hat eine sehr nette weitere Eigenschaft: Sie ist auch zum Umwandeln von als Strings vorliegenden IP-Adressen in IPAddress-Arrays gut geeignet. Mit dem IPAddress-Array kann man danach weiterrechnen – mehr dazu später.

…mit Fehlern

Solange wir unsere Anwendungen nur auf unseren lokalen Maschinen testen, müssen wir sie nicht gegen Fehler absichern. Leider gilt in praktischen Deployments Murphys Gesetz: Wo auch immer ein Idiot etwas Destruktives eingeben kann, wird er es auch tun.

Wie im letzten Teil der Serie besprochen, meldet das .NET-Sockets-API eventuelle Fehler so gut wie immer durch das Werfen einer Exception. Die GetHostAdd...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang