Sie sind hier
E-Book

C und Linux

Die Möglichkeiten des Betriebssystems mit eigenen Programmen nutzen

AutorMartin Gräfe
VerlagCarl Hanser Fachbuchverlag
Erscheinungsjahr2010
Seitenanzahl338 Seiten
ISBN9783446424159
FormatPDF
KopierschutzWasserzeichen/DRM
GerätePC/MAC/eReader/Tablet
Preis23,99 EUR

Wer Erfahrungen in der C-Programmierung hat, kann die vielen Möglichkeiten von Linux kennen lernen und ausschöpfen. Dieses Buch zeigt Ihnen wie und enthält praktische Lösungen für häufig auftauchende Aufgabenstellungen. Als Grundlage wird zunächst der Umgang mit wichtigen Werkzeugen erklärt, die in jeder Linux-Distribution enthalten sind: Editor, Compiler, Debugger, Make usw.

Darauf aufbauend führt der Autor Sie anhand vieler praktischer Beispiele in diese Themen ein:
Zugriff auf Dateien und Verzeichnisse mit C
Programme mit parallel laufenden Prozessen schreiben
USB-Geräte, CD-Laufwerk, Soundkarte und WebCams ansteuern
Programme mit grafischer Benutzeroberfläche erstellen
Direkte Hardware-Zugriffe programmieren
Eigene Hilfe-Seiten erstellen
Die automatische Anpassung auf die eingestellte Landessprache

Wie diese Themen in echten Software-Projekten zusammenspielen, können Sie an zwei umfangreichen Beispielprojekten nachverfolgen.

Die 4. Auflage wurde vollständig überarbeitet. Neu aufgenommen wurden Abschnitte zu den Entwicklungsumgebungen KDevelop und Eclipse, zur Kommunikation mit USB-Geräten, zu Broadcast und Multicast und zu Universal Plug And Play (UPnP).

Erfahren Sie, wie Sie mit eigenen C-Programmen die Möglichkeiten von Linux ausnutzen können.
Nutzen Sie die praktischen Lösungen für häufig auftauchende Aufgabenstellungen.
Viele kleine Beispiele und zwei umfangreiche Beispielprojekte geben Ihnen Anregungen für eigene Programme.

Kaufen Sie hier:

Horizontale Tabs

Leseprobe
Kapitel 7 Netzwerkprogrammierung (S. 163-164)

Seit den Anfängen von Linux vor mehr als 10 Jahren ist die Netzwerkkommunikation1 fester Bestandteil des Betriebssystems. Während zu dieser Zeit aufWindowsTM 3.11-Rechner diverse proprietäre Netzwerkprotokolle aufgesetzt wurden, war Linux von Haus aus in der Lage, über den Standard TCP/IP mit Workstations, Großrechnern und Servern in Rechenzentren zu kommunizieren. Im Bereich der PCs und Workstations wurden die proprietären Lösungen fast vollständig von TCP/IP verdrängt, sodass inzwischen die unterschiedlichen Betriebssysteme in einem Netzwerk &rdquo, die gleiche Sprache sprechen. Möglicherweise fragen Sie sich an dieser Stelle, ob Sie sichmit der komplexen ThematikNetzwerkprogrammierung auseinandersetzen sollen, weil Sie vielleicht gar nicht beabsichtigen,mehrere Computermit eigenen Programmen zu &rdquo, vernetzen".

Bei Linux ist jedoch die Netzwerkkommunikation mehr als ein Hilfmittel zum Datenaustausch zwischen zwei Computern, sie ist die logische Fortsetzung der Interprozesskommunikation, und viele Teile des Systems bauen darauf auf.Wenn Sie auf dem Desktop Ihres Linux-PCs ein Fenster schließen oder eine Schaltfläche anklicken, wird dies dem betreffenden Programm von der grafischen Oberfläche X11 über Funktionen zurNetzwerkkommunikationmitgeteilt.

Aus diesemGrund ist es sinnvoll, dieses Thema selbst bei &rdquo, Stand-Alone-Systemen" ohne einen Netzwerkanschluss zu betrachten. Die Thematik der Netzwerkprogrammierung ist deutlich umfangreicher als beispielsweise die Interprozesskommunikation. Eine vollständige und detaillierte Beschreibung umfasst leicht mehrere hundert Seiten. Deshalb konzentriert sich dieses Kapitel auf die geläufigsten Funktionen und Methoden, die Sie immerhin in die Lage versetzen werden, einen eigenenWebserver zu programmieren!

7.1 Einführung

ähnlich wie bei den vorangegangenen Kapiteln soll auch hier der Einstieg in die Thematik anhand kleiner Beispielprogramme erleichtert werden. Um die einzelnen Schritte in den Programmen nachvollziehen zu können, sind jedoch ein gewisses Grundlagenwissen und etwas Theorie unerlässlich. Insbesondere sollen die im Umfeld der Netzwerkkommunikation auftauchenden Begriffe sowie das Prinzip der Kommunikation über eine Netzwerkverbindung erläutert werden.

7.1.1 Begriffe Ethernet


Der Begriff &rdquo, Ethernet" wird häufig als Synonym für eine Netzwerkverbindung verwendet. Tatsächlich beschreibt Ethernet ein Verfahren, wie mehrere Teilnehmer auf eine gemeinsame Netzwerkleitung zugreifen können - es handelt sich dabei also um ein Zugriffsverfahren. Urspr ünglich bestand diese Netzwerkleitung aus einem Koaxialkabel ( ähnlich einem Antennenkabel), an das alle Computer eines Netzwerksegments über je ein T-St ück angeschlossen waren. Damit waren Datenraten bis 10MBit/s möglich. Heute findetman eine solche Verkabelung nur noch selten. Das Koaxialkabelwurde weitestgehend von der bekannten 8-adrigen &rdquo, CAT 5"-Leitung verdrängt, und die Netzwerkstruktur ist heutzutage in der Regel sternf örmig, mit Hubs und Switches in den Sternpunkten."
Inhaltsverzeichnis
Inhaltsverzeichnis6
Vorwort12
1 Einführung14
1.1 Warum gerade ”C“?14
1.2 Bevor es losgeht . . .15
1.2.1 Paketverwaltung unter SuSE-Linux15
1.2.2 Paketinstallation bei Ubuntu17
1.3 DieWerkzeuge19
1.3.1 Der Editor – die Qual der Wahl19
1.3.2 Der GNU C-Compiler gcc21
1.3.3 Ablaufsteuerung mit GNU make21
1.3.4 Für die Fehlersuche: Die Debugger23
1.3.5 Integrierte Entwicklungsumgebungen24
1.4 Der Umgang mit Compiler, Debugger und ”make“ anhand von Beispielen27
1.4.1 Primzahlen berechnen27
1.4.2 Fehlersuche mit dem gcc29
1.4.3 Fehlersuche mit dem GNU Debugger30
1.4.4 Funktionsbibliotheken verwenden32
1.4.5 Quelltexte aufteilen34
1.5 Weiterführende Informationen38
1.5.1 Die Unix-Online-Hilfen ”man“,”xman“ und ”tkman“39
1.5.2 Ein Blick hinter die Kulissen: Die Include-Dateien41
2 Arbeiten mit einer Entwicklungsumgebung44
2.1 Anjuta44
2.1.1 Ein neues Projekt anlegen44
2.1.2 Eingabe der Quelltexte46
2.1.3 Kompilieren und Starten des Beispiels48
2.2 KDevelop49
2.3 Eclipse + C Development Tooling (CDT)52
2.3.1 Plug-ins einbinden53
2.3.2 Ein neues Projekt anlegen53
3 Kommandozeilenprogramme56
3.1 Parameter und Rückgabewert der Funktion main()56
3.1.1 Die Bedeutung des Rückgabewertes von main()57
3.1.2 Die Variablen argc und argv57
3.1.3 Auswerten der Kommandozeilenparameter58
3.1.4 Achtung: Platzhalter!60
3.2 Konventionen für Kommandozeilenprogramme61
3.2.1 Ein Muss: Die Hilfe-Option61
3.2.2 Fehlermeldungen63
3.2.3 Eigene Manpages erstellen64
3.3 Programme mehrsprachig auslegen66
3.4 Ausgabesteuerung im Terminal-Fenster73
3.4.1 ANSI-Steuersequenzen73
3.4.2 Die ”ncurses“-Bibliothek74
4 Dateien und Verzeichnisse80
4.1 Die Arbeit mit Dateien80
4.1.1 Gepufferte Ein-/Ausgabe80
4.1.2 stdin, stdout und stderr81
4.1.3 Dateien öffnen und schließen82
4.1.4 Lesen aus und Schreiben in Dateien83
4.1.5 Ein Beispiel: Zeilen nummerieren87
4.2 Eigenschaften von Dateien oder Verzeichnissen auswerten88
4.3 Verzeichnisse einlesen90
5 Interprozesskommunikation92
5.1 Prozessverwaltung unter Linux92
5.2 Neue Prozesse starten93
5.2.1 Shell-Programme aufrufen mit system()93
5.2.2 Die Funktionen der exec-Familie94
5.2.3 Einen Kind-Prozess erzeugen mit fork()95
5.2.4 Warteschleifen98
5.3 Signale99
5.3.1 DieWeckfunktion alarm()100
5.3.2 Einen Signal-Handler einrichten101
5.3.3 Auf die Beendigung eines Kind-Prozesses warten102
5.3.4 Signale setzen mit kill()103
5.4 Datenaustausch zwischen Prozessen104
5.4.1 Pipes104
5.4.2 FIFOs108
5.4.3 SharedMemory110
5.5 Alternative Verfahren zur Erzeugung von Prozessen113
5.5.1 popen() und pclose()113
5.5.2 Die fork()-Alternative clone()114
5.5.3 POSIX-Threads116
6 Devices – das Tor zur Hardware120
6.1 Das Device-Konzept von Linux120
6.1.1 Devices öffnen und schließen121
6.1.2 Ungepuffertes Lesen und Schreiben122
6.1.3 Devices steuern mit ioctl()123
6.2 Das CD-ROM-Laufwerk124
6.2.1 Die CD” auswerfen“124
6.2.2 Fähigkeiten des Laufwerks auslesen125
6.2.3 Audio-CDs abspielen127
6.3 Ansteuerung einer Soundkarte134
6.3.1 OSS, ALSA und ESOUND135
6.3.2 Der Mixer135
6.3.3 Audiodaten aufnehmen und wiedergeben139
6.4 ”Video for Linux“143
6.4.1 Eigenschaften des Devices143
6.4.2 Bilder aufzeichnen146
6.5 Die serielle Schnittstelle155
6.5.1 Terminal-Parameter einstellen156
6.5.2 Ein kleines Terminalprogramm158
6.6 Druckerausgaben162
6.7 Der Universal Serial Bus (USB)167
6.7.1 Ansteuerung von USB-Geräten anhand eines Beispiels169
7 Netzwerkprogrammierung176
7.1 Einführung177
7.1.1 Begriffe177
7.1.2 Vorbereitung179
7.1.3 Das Client-Server-Prinzip182
7.1.4 Sockets183
7.2 Der TCP/IP-Client184
7.2.1 Aufbau einer Verbindung184
7.2.2 Ein ”Universal“-Client186
7.2.3 Rechnernamen in IP-Adressen umwandeln189
7.3 Server-Programme191
7.3.1 Die Funktionsweise eines Servers191
7.3.2 Ein interaktiver TCP/IP-Server193
7.3.3 Ein kleiner Webserver197
7.4 Das User Datagram Protocol (UDP)204
7.4.1 UDP-Nachrichten senden204
7.4.2 Der UDP-Server207
7.4.3 Pakete an alle Teilnehmer senden: Broadcast210
7.4.4 Multicast-Sockets212
7.4.5 UPnP – Universal Plug And Play213
7.5 Noch einWort zur Sicherheit217
8 Grafische Benutzeroberflächen218
8.1 Die grafische Oberfläche X11218
8.2 Das Toolkit GTK+219
8.2.1 GTK 1.2 versus GTK 2.0219
8.2.2 GTK-Programme übersetzen220
8.2.3 Ein erstes Beispiel221
8.2.4 Das Callback-Prinzip223
8.2.5 Schaltflächen (Buttons)226
8.2.6 Hinweistexte (Tipps)229
8.2.7 Widgets anordnen229
8.2.8 Text-Labels233
8.2.9 Dialogfenster234
8.2.10 Auswahlfelder237
8.2.11 Eingabefelder für Text und Zahlen241
8.2.12 Menüs246
8.2.13 Pixmap-Grafiken darstellen251
8.2.14 Zeichenflächen257
8.2.15 Zeichenfläche mit Rollbalken263
8.2.16 Dateiauswahlfenster265
8.2.17 Umlaute und Sonderzeichen268
8.2.18 Wie geht es weiter?268
8.3 Grafik ohne X11 mit der SVGALIB269
8.3.1 Besonderheiten beim Arbeiten mit der libvga269
8.3.2 Ein erstes Beispiel270
8.3.3 Mit Perspektive: 3D-Funktionen zeichnen273
8.3.4 Ein kleines Malprogramm275
8.3.5 Erweiterte Funktionen mit der libvgagl279
8.3.6 Weitere Informationsquellen281
9 Hardware-Programmierung284
9.1 Hardware-nahe Programme schreiben284
9.1.1 Eigene Programme mit root-Rechten ausstatten285
9.1.2 Zugriff auf I/O-Ports freischalten285
9.1.3 Zugriff auf die I/O-Ports286
9.2 Ansteuerung des Parallelports287
9.2.1 Beschreibung des Parallelports287
9.2.2 Die Adresse des Parallelports suchen288
9.2.3 Ein Beispiel: ”LED-Lauflicht“289
9.3 Modem-Steuerleitungen abfragen292
10 Beispielprojekte296
10.1 WebCam: Video-Übertragung per HTTP296
10.1.1 Wie die Bilder laufen lernen297
10.1.2 Strukturierung der Quelltexte297
10.1.3 Die HTTP-Authentifizierung311
10.2 Telefonbuch mit automatischer Anwahl313
10.2.1 Ziel des Projektes313
10.2.2 Strukturierung des Projektes314
10.2.3 Das Hauptprogramm314
10.2.4 Funktionen zur Ansteuerung des Modems317
10.2.5 Die Benutzerschnittstelle320
10.2.6 To Do325
Anhang328
A1 – Daten zum Buch im Internet328
A2 – Das X11-Toolkit XView328
A3 – Aufbau einer WAV-Audiodatei329
A4 – Aufbau einer AU-Audiodatei330
A5 – Linux-Programmierung unterWindows: Cygwin330
Literaturverzeichnis332
Stichwortverzeichnis334

Weitere E-Books zum Thema: Programmiersprachen - Softwareentwicklung

Praktisches Programmieren in C

E-Book Praktisches Programmieren in C
Grundlagen und Tipps Format: PDF

Wer programmieren will, kommt an C nicht vorbei. Vor allem bei der maschinennahen Programmierung, der Entwicklung von Betriebssystemen und in der technischen Informatik spielt C seit mehr als 30…

Profikurs ABAP®

E-Book Profikurs ABAP®
Konkrete, praxisorientierte Lösungen - Tipps, Tricks und jede Menge Erfahrung Format: PDF

Professionelle und sichere Anwendungsentwicklung unter SAP R/3® ist kein Zufall, sondern eine Sache der Erfahrung. Das Resultat: Tricks und Kniffe, von denen auch Sie als ABAP® Professional…

Wege aus der Softwarekrise

E-Book Wege aus der Softwarekrise
Verbesserungen bei der Softwareentwicklung Format: PDF

Seit Jahrzehnten steckt die Softwareentwicklung in der Krise. Laut aktuellen Statistiken gehen immer noch mehr als die Hälfte aller in der IT-Produktion eingesetzten Mittel verloren. Angekündigte…

MDA®

E-Book MDA®
Effektives Software-Engineering mit UML2® und Eclipse? Format: PDF

Dieses Buch liefert sowohl die theoretischen Grundlagen als auch das praktische Handwerkszeug zur Anwendung der Model-Driven-Architecture der OMG. Nach einer Definition und der Einordnung des…

Moderne C++ Programmierung

E-Book Moderne C++ Programmierung
Klassen, Templates, Design Patterns Format: PDF

C++ ist eine objektorientierte Programmiersprache, neben der Objektorientierung gewinnt aber die generische Programmierung mittels parametrisierbaren Klassen oder Templates zunehmend an Bedeutung, da…

Numerik-Algorithmen

E-Book Numerik-Algorithmen
Verfahren, Beispiele, Anwendungen Format: PDF

Das Buch ist eine praxisnahe Einführung in die Numerische Mathematik zu grundlegenden Aufgabengebieten wie lineare und nichtlineare Gleichungen und Systeme, Eigenwerte von Matrizen, Approximation,…

SAP für Java-Entwickler

E-Book SAP für Java-Entwickler
Konzepte, Schnittstellen, Technologien Format: PDF

Seit kurzem forciert SAP die Verbreitung der Netweaver-Technologie und initiiert damit eine Gleichstellung von Java und ABAP als Sprachen zur SAP-Programmierung. Dieses Buch leistet einem erfahrenen…

Weitere Zeitschriften

Courier

Courier

The Bayer CropScience Magazine for Modern AgriculturePflanzenschutzmagazin für den Landwirt, landwirtschaftlichen Berater, Händler und generell am Thema Interessierten, mit umfassender ...

DER PRAKTIKER

DER PRAKTIKER

Technische Fachzeitschrift aus der Praxis für die Praxis in allen Bereichen des Handwerks und der Industrie. “der praktiker“ ist die Fachzeitschrift für alle Bereiche der fügetechnischen ...

Die Versicherungspraxis

Die Versicherungspraxis

Behandlung versicherungsrelevanter Themen. Erfahren Sie mehr über den DVS. Der DVS Deutscher Versicherungs-Schutzverband e.V, Bonn, ist der Interessenvertreter der versicherungsnehmenden Wirtschaft. ...

dima

dima

Bau und Einsatz von Werkzeugmaschinen für spangebende und spanlose sowie abtragende und umformende Fertigungsverfahren. dima - die maschine - bietet als Fachzeitschrift die Kommunikationsplattform ...

DSD Der Sicherheitsdienst

DSD Der Sicherheitsdienst

Der "DSD – Der Sicherheitsdienst" ist das Magazin der Sicherheitswirtschaft. Es erscheint viermal jährlich und mit einer Auflage von 11.000 Exemplaren. Der DSD informiert über aktuelle Themen ...

IT-BUSINESS

IT-BUSINESS

IT-BUSINESS ist seit mehr als 25 Jahren die Fachzeitschrift für den IT-Markt Sie liefert 2-wöchentlich fundiert recherchierte Themen, praxisbezogene Fallstudien, aktuelle Hintergrundberichte aus ...