1
我正在學習OpenSSL庫。 這是我的代碼BIO_read始終返回0
#include <openssl/ssl.h>
#include <openssl/bio.h>
#include <openssl/err.h>
#include <stdio.h>
void connect_openssl();
int main (int argc, char **argv)
{
CRYPTO_malloc_init();
SSL_library_init();
SSL_load_error_strings();
ERR_load_BIO_strings();
OpenSSL_add_all_algorithms();
connect_openssl();
return 0;
}
void connect_openssl()
{
BIO *bio = BIO_new_connect("google.com:80");
char buffer[1024];
if (bio == NULL)
{
printf("Error creating BIO! \n");
//ERR_print_errors(stderr);
return;
}
if (BIO_do_connect(bio) <= 0)
{
printf("Failed to connect! \n");
return;
}
char buff[1024];;
char send[1024];
memset(send, 0, sizeof(send));
strcat(send, "GET/HTTP/1.1\nHost:google.com\nUser Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)\nConnection: Close\n\n");
BIO_puts(bio, send);
while (1)
{
int x = BIO_read(bio, buff, sizeof(buff)-1);
if (x == 0)
{
printf("x==0\n");
break;
}
else if (x < 0)
{
if (! BIO_should_retry(bio))
{
printf("\nRead failed!\n");
BIO_free_all(bio);
return;
}
}
else
{
buffer[x] = 0;
printf("DATA:\n\n");
printf("%s", buffer);
}
}
BIO_free_all(bio);
return;
}
的問題是BIO_READ()總是返回0值。有人能告訴我這段代碼有什麼問題嗎?
我不認爲它_always_返回'0'。當我運行你的程序時,我得到了以下輸出:'DATA:\ n \ n @,¢ûx== 0'。至少有一個循環通過它返回非零。 (實際換行符,但評論不會讓通過。) – sarnold