05.11.2013 Aufrufe

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

Zahn - Unix-Netzwerkprogramminerung mit Threads, Sockets und SSL

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

4 bio = BIO_new( BIO_s_file() );<br />

5 /* BIO <strong>mit</strong> der Datei verknüpfen */<br />

6 BIO_set_fp( bio, file, BIO_NOCLOSE );<br />

6.3 Open<strong>SSL</strong>-Basisfunktionalität 331<br />

7<br />

8 /* Jetzt kann das BIO-Objekt zum Schreiben genutzt werden */<br />

9 BIO_puts( bio, "Äußerst wichtige Mitteilung!\n" );<br />

10<br />

11 /* Abschließend das BIO-Objekt freigeben */<br />

12 BIO_free( bio );<br />

13 /* Wegen BIO_NOCLOSE die Datei separat schließen */<br />

14 fclose( file );<br />

Die beiden Funktionen BIO_new_file() <strong>und</strong> BIO_new_fp() bieten hilfreiche<br />

Abkürzungen bei der Erstellung eines neuen BIO-Objekts für Dateien.<br />

BIO_new_fp() faßt dazu die Funktionen BIO_new() <strong>und</strong> BIO_set_fp() in<br />

einem Aufruf zusammen, BIO_new_file() schließt sogar zusätzlich noch das<br />

Öffnen der Datei <strong>mit</strong>tels fopen() in die Funktion <strong>mit</strong> ein. Der Parameter mode<br />

entspricht dabei den mode-Attributen, die an die fopen()-Funktion übergeben<br />

werden. Da bei BIO_new_file() die Datei implizit geöffnet wird, ist für<br />

das erstellte BIO konsequenterweise auch das Flag BIO_CLOSE gesetzt, d. h. die<br />

Datei wird beim Aufruf von BIO_free() wieder geschlossen.<br />

1 /* Datei-BIO <strong>mit</strong> zum Schreiben geöffneter Datei erstellen */<br />

2 bio = BIO_new_file( "output.txt", "w+" );<br />

3<br />

4 /* Ausgabe über das neue BIO-Objekt */<br />

5 BIO_puts( bio, "Äußerst wichtige Mitteilung!\n" );<br />

6<br />

7 /* BIO-Objekt freigeben , Datei wird implizit geschlossen */<br />

8 BIO_free( bio );<br />

Analog zu den BIO-Funktionen für Dateien gibt es r<strong>und</strong> um BIO_s_fd() einen<br />

Satz von BIO-Funktionen, die auf Basis der elementaren Ein- <strong>und</strong> Ausgabe <strong>mit</strong><br />

Dateideskriptoren arbeiten, auf die wir aber nicht weiter eingehen.<br />

Ein BIO für aktive Clientsockets: BIO_s_connect()<br />

Obwohl sich unter <strong>Unix</strong> Datei- <strong>und</strong> Socketdeskriptoren über die selbe API bedienen<br />

lassen, haben sich die Open<strong>SSL</strong>-Entwickler aus Portabilitätsgründen<br />

dazu entschieden, für die beiden Deskriptortypen zwei unterschiedliche BIO-<br />

Typen einzuführen. So<strong>mit</strong> gibt es auch auf anderen, nicht-unixbasierten Betriebssystemen<br />

keine Probleme <strong>mit</strong> den BIO-Objekten dieses Typs.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!