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.

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

erhält dadurch die gewünschten zwei BIO-Ketten accept_bio (für weitere<br />

eingehende Verbindungen) <strong>und</strong> buffer_bio→ssl_bio→client_bio (für den<br />

Datenaustausch <strong>mit</strong> dem Client). Wir werden dieses Beispiel weiter unten im<br />

Rahmen der <strong>SSL</strong>-Programmierung nochmals praktisch aufgreifen.<br />

accept_bio buffer_bio ssl_bio<br />

BIO_accept(accept_bio)<br />

accept_bio buffer_bio ssl_bio client_bio<br />

BIO_pop(accept_bio)<br />

accept_bio buffer_bio ssl_bio client_bio<br />

Abb. 6.5. Neue Verbindungen <strong>mit</strong> BIO_accept() annehmen<br />

Mit der Funktion BIO_get_fd() kann schließlich der zu einem Socket-BIO<br />

assoziierte Socketdeskriptor er<strong>mit</strong>telt werden. Für annehmende <strong>Sockets</strong> kann<br />

dann z. B. über getpeername() die Socket-Adresse des entfernten Kommunikationsendpunkts<br />

bestimmt werden.<br />

Ein BIO zur Datenpufferung: BIO_f_buffer()<br />

Das Puffer-BIO dient als praktischer Zwischenspeicher für Ein- <strong>und</strong> Ausgaben.<br />

Im Gegensatz zu anderen BIO-Typen unterstützen die BIO-Objekte dieses<br />

Typs die zeilenweise Verarbeitung der zu transportierenden Daten. Deshalb<br />

werden die <strong>mit</strong> der Hilfsfunktion BIO_f_buffer() ins Leben gerufenen BIO-<br />

Objekte häufig vor ein Accept- oder Connect-BIO gestellt, um ein zeilenorientiertes<br />

Anwendungsprotokoll zwischen zwei Netzwerkanwendungen zu implementieren.<br />

Ein neues Puffer-BIO hat Platz für 2*DEFAULT_BUFFER_SIZE Zeichen<br />

(jeweils DEFAULT_BUFFER_SIZE Zeichen für den Ein- <strong>und</strong> Ausgabepuffer)<br />

<strong>und</strong> kann sofort <strong>und</strong> ohne weitere Initialisierung verwendet werden.<br />

#include<br />

<br />

BIO_METHOD *BIO_f_buffer( void );<br />

long BIO_set_read_buffer_size( BIO *b, long size );<br />

long BIO_set_write_buffer_size( BIO *b, long size );<br />

long BIO_set_buffer_size( BIO *b, long size );

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!