⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bio_read.pod

📁 开源的ssl算法openssl,版本0.9.8H
💻 POD
字号:
=pod=head1 NAMEBIO_read, BIO_write, BIO_gets, BIO_puts - BIO I/O functions=head1 SYNOPSIS #include <openssl/bio.h> int	BIO_read(BIO *b, void *buf, int len); int	BIO_gets(BIO *b,char *buf, int size); int	BIO_write(BIO *b, const void *buf, int len); int	BIO_puts(BIO *b,const char *buf);=head1 DESCRIPTIONBIO_read() attempts to read B<len> bytes from BIO B<b> and placesthe data in B<buf>.BIO_gets() performs the BIOs "gets" operation and places the datain B<buf>. Usually this operation will attempt to read a line of datafrom the BIO of maximum length B<len>. There are exceptions to thishowever, for example BIO_gets() on a digest BIO will calculate andreturn the digest and other BIOs may not support BIO_gets() at all.BIO_write() attempts to write B<len> bytes from B<buf> to BIO B<b>.BIO_puts() attempts to write a null terminated string B<buf> to BIO B<b>=head1 RETURN VALUESAll these functions return either the amount of data successfully read orwritten (if the return value is positive) or that no data was successfullyread or written if the result is 0 or -1. If the return value is -2 thenthe operation is not implemented in the specific BIO type.=head1 NOTESA 0 or -1 return is not necessarily an indication of an error. Inparticular when the source/sink is non-blocking or of a certain typeit may merely be an indication that no data is currently available and thatthe application should retry the operation later.One technique sometimes used with blocking sockets is to use a system call(such as select(), poll() or equivalent) to determine when data is availableand then call read() to read the data. The equivalent with BIOs (that is callselect() on the underlying I/O structure and then call BIO_read() toread the data) should B<not> be used because a single call to BIO_read()can cause several reads (and writes in the case of SSL BIOs) on the underlyingI/O structure and may block as a result. Instead select() (or equivalent)should be combined with non blocking I/O so successive reads will requesta retry instead of blocking.See L<BIO_should_retry(3)|BIO_should_retry(3)> for details of how todetermine the cause of a retry and other I/O issues.If the BIO_gets() function is not supported by a BIO then it possible towork around this by adding a buffering BIO L<BIO_f_buffer(3)|BIO_f_buffer(3)>to the chain.=head1 SEE ALSOL<BIO_should_retry(3)|BIO_should_retry(3)>TBA

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -