Praktische Aufgabe 1: netcat
Es ist eine Applikation nach dem Vorbild des bekannten netcat bzw. nc zu implementieren. Dabei werden Daten von der Standard-Eingabe über eine TCP-Verbindung an die Gegenstelle übertragen und Daten von der Gegenstelle empfangen und auf der Standard-Ausgabe ausgegeben.
Das Programm kann wahlweise auf den Aufbau einer Verbindung warten, wobei per Parameter der Port übergeben wird, auf dem gelauscht werden soll. Stellt das Programm die Verbindung zu einer Gegenstelle her, so wird der Name oder die IP-Adresse der Gegenstelle und der entsprechende Port als Parameter übergeben.
Bei der Erstellung des Programms sind folgende Punkte zu beachten:
- Neben dem Port können sowohl der Hostname als auch die IP-Adresse als Parameter übergeben werden. Die Adresse sollte mittels getaddrinfo() bezogen werden.
- Besteht eine Verbindung, sollte die Standard-Eingabe und der TCP-Socket mittels poll() überwacht werden, so dass eine Kommunikation in beide Richtungen in beliebiger Abfolge möglich ist.
- Die zu übertragenden Daten sollen nicht interpretiert werden. Somit soll es möglich sein, beliebige Binärdaten zu übertragen.