Netzwerkprogrammierung unter Linux und UNIX Bearbeitet von Stefan Fischer, Walter Müller 2. Auflage 1999. Buch. XII, 228 S. Hardcover ISBN 978 3 446 21093 6 Format (B x L): 14 x 20,9 cm Gewicht: 329 g Zu Leseprobe schnell und portofrei erhältlich bei Die Online-Fachbuchhandlung beck-shop.de ist spezialisiert auf Fachbücher, insbesondere Recht, Steuern und Wirtschaft. Im Sortiment finden Sie alle Medien (Bücher, Zeitschriften, CDs, ebooks, etc.) aller Verlage. Ergänzt wird das Programm durch Services wie Neuerscheinungsdienst oder Zusammenstellungen von Büchern zu Sonderpreisen. Der Shop führt mehr als 8 Millionen Produkte.
CARL HANSER VERLAG Stefan Fischer, Walter Müller Netzwerkprogrammierung unter Linux und UNIX 3-446-21093-8 www.hanser.de
INHALTSVERZEICHNIS 1. EINFÜHRUNG UND ÜBERSICHT....1 2. COMPUTER-NETZWERKE...5 2.1 Aufbau von Rechnernetzen................................. 5 2.2 UNIX-basierte Netze...................................... 9 Das Internet............................................. 9 UNIX und das Internet................................... 11 3. PROGRAMMIEREN IN EINER UNIX-UMGEBUNG...13 3.1 C-Compiler............................................. 13 3.2 make.................................................. 16 3.3 System V vs. BSD-UNIX.................................. 24 4. REMOTE PROCEDURE CALL (RPC)........................... 25 4.1 Modell des entfernten Prozeduraufrufs...................... 26 4.2 Datendarstellung mit XDR................................ 28 4.3 Das Werkzeug rpcgen.................................... 33 Aufruf................................................. 34 4.4 Beispielanwendung: Schiffe-Versenken.................... 35 Das Spiel.............................................. 35 1. Schritt: Identifizieren der entfernten Prozeduren............ 36 2. Schritt: Erstellen der XDR-Datei......................... 38 3. Schritt: Erzeugung der C-Dateien mit Hilfe von rpcgen....... 40 4. Schritt: Ausfüllen der Serverroutinen..................... 46 5. Schritt: Schreiben der Client-Anwendung.................. 48 6. Schritt: Compilieren und Linken......................... 50 7. Schritt: Starten des Servers............................. 52 8. Schritt: Starten des Clients............................. 53 4.5 Zusammenfassung....................................... 54 vii
INHALT 5. TCP SOCKETS...55 5.1 Kommunikationsmodell.................................. 55 5.2 Zugriff auf die Socketschnittstelle.......................... 57 Erzeugen eines Sockets................................... 57 Verbindungsaufbauwunsch................................ 57 Warten auf einen Verbindungsaufbauwunsch................. 58 Senden von Daten....................................... 59 Empfangen von Daten.................................... 59 Schließen der Verbindung................................. 60 5.3 Aufbau eines Client-Programms............................ 60 Feststellen des Servers................................... 61 Feststellen der Portnummer............................... 61 Verbindungsaufbau auf der Basis der Serveradresse........... 61 5.4 Aufbau eines Server-Programms........................... 63 5.5 Besonderheiten der Datenübertragung...................... 65 Kodierung und Übertragung komplexer Datenstrukturen....... 65 Empfang und Dekodierung komplexer Datenstrukturen........ 69 Lokales und Netzformat.................................. 71 5.6 Beispiel: Schiffe-Versenken.............................. 72 Das Client-Programm.................................... 73 Das Server-Programm.................................... 78 Programmübersetzung und -start.......................... 80 6. UDP SOCKETS...83 6.1 TCP und UDP.......................................... 83 6.2 Struktur von UDP-basierter Software....................... 84 6.3 Videoübertragung mit UDP............................... 87 Der Video-Client........................................ 89 Der Video-Server........................................ 93 7. STREAMS UND TRANSPORT LAYER INTERFACE....97 7.1 Zugriff auf die TLI-Schnittstelle............................ 97 Öffnen eines Transport-Endpunkts......................... 97 Aktivieren eines Transport-Endpunkts...................... 98 Speicherplatz für TLI-Strukturen.......................... 99 Verbindungsaufbau..................................... 100 Warten auf einen Verbindungsaufbauwunsch................ 101 Behandlung eines Verbindungsaufbauwunsches............. 101 Datenübertragung...................................... 102 Schließen der Verbindung................................ 102 viii
INHALT Fehlerbehandlung...................................... 103 7.2 Aufbau eines Client-Programms........................... 103 Feststellen des Servers.................................. 104 Festlegen des Dienstes.................................. 104 Verbindungsaufbau..................................... 105 7.3 Aufbau eines Server-Programms.......................... 106 7.4 Beispiel Schiffe-versenken.............................. 109 Gemeinsame Vereinbarungen für beide Programme.......... 109 Das Client-Programm................................... 110 Das Server-Programm................................... 112 7.5 Verbindungslose Datenübertragung....................... 115 Aufbau eines verbindungslosen Client-Programms........... 116 Aufbau eines verbindungslosen Server-Programms........... 117 8. PROGRAMMIERUNG MIT JAVA...121 8.1 Was ist das World Wide Web?............................ 121 8.2 Programmierung des WWW.............................. 124 8.3 Die Java-Programmierumgebung.......................... 125 Installation einer Java-Umgebung......................... 125 Doch ein Java-Compiler?................................. 126 Applet oder Application?................................. 126 8.4 Objektorientierte Programmierung........................ 127 Objekte, Klassen und Methoden........................... 127 Information Hiding..................................... 128 Vererbung, Basisklassen und Überschreiben von Methoden.... 129 8.5 Die ersten Applets...................................... 129 8.6 Grafische Benutzeroberflächen............................ 135 Buttons............................................... 136 Textfelder............................................. 137 Auswahl und Listen..................................... 138 Java Swing............................................ 140 8.7 Threads.............................................. 141 8.8 Netzwerkprogrammierung............................... 143 9. CORBA............................................... 151 9.1 Einführung in CORBA.................................. 152 Idee.................................................. 152 Object Request Broker................................... 153 Interface Definition Language (IDL)....................... 154 Stubs und Skeletons.................................... 156 Name Service.......................................... 157 ix
INHALT 9.2 Wie schreibt man eine CORBA-Anwendung?................ 158 9.3 Ablauf einer CORBA-Anwendung......................... 161 9.4 Schiffe-Versenken in CORBA............................. 163 Schritt 1: Anforderungsanalyse........................... 163 Schritt 2: Systemdesign.................................. 164 Schritt 3: IDL-Entwicklung.............................. 165 Schritt 4: Codegenerierung............................... 167 Schritt 5: Objektmethodenentwicklung..................... 169 Schritt 6: Anwendungslogikentwicklung.................... 172 Schritt 7: Übersetzen der Quelltexte....................... 175 Schritt 8: Start der Anwendung........................... 175 10. KOMPLEXE KOMMUNIKATIONSSOFTWARE...177 10.1 Mehrstufige RPCs...................................... 177 Warum mehrstufige RPCs?............................... 177 Erzeugung der Software................................. 179 Beispiel: ein verteilter Rechenserver....................... 179 10.2 Behandlung mehrerer Clients............................ 184 Umgehen der Blockierung mit select()...................... 184 Server mit mehreren Prozessen........................... 188 10.3 Weiterführende Möglichkeiten von CORBA................. 191 Mehrstufige Objektaufrufe.............................. 191 Callbacks............................................. 193 Client-Struktur........................................ 194 Server-Struktur........................................ 195 10.4 Zusammenfassung...................................... 196 11. VERGLEICH DER PROGRAMMIERMETHODEN...197 11.1 Art der Anwendung..................................... 197 11.2 Erfahrung des Programmierers........................... 200 11.3 Eigenschaften des vorhandenen Rechners................... 201 A. ABHOLEN DER BEISPIELE PER FTP...203 B. SYSTEMAUFRUFE UND BIBLIOTHEKSROUTINEN...205 ACCEPT.............................................. 205 BIND................................................ 205 CLOSE............................................... 206 x
CONNECT............................................ 206 FORK................................................ 206 GETHOSTBYNAME.................................... 207 GETSERVBYNAME.................................... 207 LISTEN.............................................. 208 READ................................................ 208 RECVFROM........................................... 208 SELECT.............................................. 209 SENDTO............................................. 209 SOCKET.............................................. 209 WRITE............................................... 210 C. ONLINE-INFORMATIONEN ZU JAVA...211 D. LITERATURHINWEISE...213 UNIX................................................ 213 Rechnernetze.......................................... 213 TCP, UDP und RPC..................................... 214 Java................................................. 214 INDEX...215 xi