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

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

326 6 Netzwerkprogrammierung <strong>mit</strong> <strong>SSL</strong><br />

gelöste Objekt b steht da<strong>mit</strong> wieder als isoliertes BIO zur Verfügung <strong>und</strong> kann<br />

z. B. freigegeben oder wieder in andere Ketten eingebaut werden.<br />

BIOObj. A BIOObj. B BIOObj. C<br />

BIO_push(A,B)<br />

BIOObj. A BIOObj. B BIOObj. C<br />

Abb. 6.3. BIO-Ketten <strong>mit</strong> BIO_push() zusammenfügen<br />

Die Namen der beiden Funktionen sind im übrigen recht unglücklich gewählt,<br />

denn die Bezeichnungen Push <strong>und</strong> Pop suggerieren im Allgemeinen, daß sie<br />

einen Stapel von Objekten verwalten, die dem Stapel einzeln (<strong>und</strong> immer von<br />

der gleichen Seite) hinzugefügt oder entnommen werden. Das Funktionenpaar<br />

verhält sich jedoch anders: Mit BIO_push() kann gleich eine ganze Menge von<br />

Objekten zusammengeführt werden <strong>und</strong> BIO_pop() entfernt sogar ein BIO-<br />

Objekt <strong>mit</strong>ten aus einer Kette von Objekten (<strong>und</strong> nicht nur von deren Ende).<br />

Abbildung 6.4 illustriert, wie ein BIO-Objekt aus der Mitte einer BIO-Kette<br />

entnommen wird.<br />

BIOObj. A BIOObj. B BIOObj. C<br />

BIO_pop(B)<br />

BIOObj. B<br />

BIOObj. A<br />

BIOObj. C<br />

Abb. 6.4. BIO-Ketten <strong>mit</strong> BIO_pop() zerlegen<br />

Mit BIO_free() <strong>und</strong> BIO_free_all() werden entweder einzelne BIO-Objekte<br />

oder gleich alle BIO-Objekte einer BIO-Kette wieder freigegeben. Bevor <strong>mit</strong><br />

BIO_free() ein einzelnes Objekt einer BIO-Kette freigegeben wird, sollte das<br />

angegebene BIO natürlich tunlichst <strong>mit</strong> BIO_pop() aus der Kette entfernt werden.<br />

BIO_free() <strong>und</strong> BIO_free_all() liefern den Rückgabewert 1, falls das<br />

BIO bzw. die gesamte BIO-Kette erfolgreich freigegeben wurde, andernfalls 0.<br />

6.3.3 Ein-/Ausgabe über BIO-Objekte<br />

Zur Ein- <strong>und</strong> Ausgabe von Daten über BIO-Objekte stehen die vier Funktionen<br />

BIO_read(), BIO_gets(), BIO_write() <strong>und</strong> BIO_puts() bereit. Die beiden

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!