Wednesday, 19. April 2006, 10:10:28
Ich habe mir die Aufgabe gestellt ein Programm zu schreiben, welches die eigene IP herausfindet und ausgibt. Später soll die IP für ein einfaches
Internet-Programm verwendet werden. Das wird (hoffentlich *g*) ein simples
Vier-Gewinnt-Spiel für die Windows-Konsole.
So soll es ablaufen:
- Spielfeld zeichnen
- über das Internet Verbindung zu einem Spieler aufnehmen
- Spiel starten
- wechselseitig Züge machen/senden/zeichnen
- erkennen, wann ein Spieler gewonnen hat
- Spiel beenden
Das Spielfeld wird ein eine einfache Tabelle in dieser Form:
(x und o stehen dabei jeweils für die Spielsteine)
---------
|o| | | | 1
|o|x| | | 2
|o|x|x| | 3
|o|x|x|x| 4
---------
a b c d
Da es in der Konsole läuft, müsste der Spieler A beispielsweise "a1" eingeben, um seinen Stein ins erste Feld links zu setzen. Dann sollte
das Spielfeld neu gezeichnet werden sowie der Zug an den anderen Spieler gesendet und dort ebenfalls gezeichnet werden. Danach wartet das Programm auf den Zug von Spieler B.
Um überhaupt über das Internet spielen zu können, benötigt man die eigene
IP-Adresse. Theoretisch gibt man diese Adresse seinem Gegenspieler (per Mail, per Telefon, per-sönlich) und es kann losgehen. Besser wäre natürlich, wenn man diese Adresse an einen Server sendet wo sie hinterlegt wird. Ein Gegenspieler würde sie dort finden und könnte seinem Programm dann sagen, eben jenen Spieler zu kontakieren. Dies ist mit meinem Wissen aber (noch?) nicht zu machen, daher läuft es auf die umständliche Tour hinaus.
Warum überhaupt ein menschlicher Gegenspieler?
Nun, gäbe es den nicht, dann müsste das Programm ja quasi eine
künstliche Intelligenz haben. Das dürfte noch schwerer werden, als
eine simple Netzwerkfunktion einzubauen.
Der
erste Teil meines Programms beschäftigt sich also damit, die eigene IP-Adresse herauszufinden. Das funktioniert über ein Windows-Programm namens "ipconfig.exe". Dies wird von meinem Programm aufgerufen und schreibt seine Ausgabe in die Datei "out.txt". Diese wird wiederum eingelesen und die Zeile (Nr.6), in der die IP-Adresse steht, extrahiert und die IP ausgegeben.
Das funktioniert soweit, hier ist der Quelltext.
ipextract.cpp.txtIch hatte anfangs einige Probleme damit, die tatsächliche IP zu extrahieren.
MartinF von
coding-board.de hat eine simple Lösung vorgeschlagen. Diese ist wesentlich eleganter als meine und langsam dämmert mir, was "guter" und was "schlechter" Code ist.

Viele Grüße
tatoeff