0
Ich möchte ein TCP-Paket mit Socket FD erhalten und es in OpenSSL BIO. Der folgende Code:Empfangen Sie ein TCP-Paket und steckte es in Openssl BIO_mem
char buffer[256];
n = recv(fd, buffer, 256, 0);
BIO* bio = BIO_new(BIO_s_mem());
int y = BIO_puts(bio, buffer);
Aber es erhalten n = 227 Bytes und es setzen nur y = 3 Bytes in Bio. Wie kann ich es reparieren?
Wahrscheinlich "BIO_puts" stoppt bei den ersten 0 Byte, weil es für die Verwendung mit C-Strings entwickelt wurde. – immibis
Also, was ist dein Vorschlag, um es zu beheben? – mitrc
@Heil_Me - Verwenden Sie ['BIO_write'] (http://www.openssl.org/docs/manmaster/crypto/BIO_read.html), das einen Zeiger und eine Länge benötigt. Es sollte etwa so aussehen: 'BIO_puts (bio, buffer, n)'. Sie sollten auch den Rückgabewert von 'recv' überprüfen, um sicherzustellen, dass es nicht fehlschlägt. Andernfalls wird 'n' wahrscheinlich' -1' sein, was zu '0xffff ... ffff' befördert wird. – jww