NAME
BIO_s_accept, BIO_set_accept_port, BIO_get_accept_port, BIO_new_accept, BIO_set_nbio_accept, BIO_set_accept_bios, BIO_set_bind_mode, BIO_get_bind_mode, BIO_do_accept — accept BIOSYNOPSIS
#include <openssl/bio.h>BIO_s_accept(void);
BIO_set_accept_port(BIO *b, char *name);
BIO_get_accept_port(BIO *b);
BIO_new_accept(char *host_port);
BIO_set_nbio_accept(BIO *b, int n);
BIO_set_accept_bios(BIO *b, char *bio);
BIO_set_bind_mode(BIO *b, long mode);
BIO_get_bind_mode(BIO *b, long dummy);
#define BIO_BIND_REUSEADDR_IF_UNUSED 1
#define BIO_BIND_REUSEADDR 2
BIO_do_accept(BIO *b);
DESCRIPTION
BIO_s_accept() returns the accept BIO method. This is a wrapper round the platform's TCP/IP socket accept routines.NOTES
When an accept BIO is at the end of a chain, it will await an incoming connection before processing I/O calls. When an accept BIO is not at then end of a chain, it passes I/O calls to the next BIO in the chain.connection = BIO_pop(accept);
EXAMPLES
This example accepts two connections on port 4444, sends messages down each and finally closes both down.
BIO *abio, *cbio, *cbio2; 
ERR_load_crypto_strings(); 
abio = BIO_new_accept("4444"); 
 
/* First call to BIO_accept() sets up accept BIO */ 
if (BIO_do_accept(abio) <= 0) { 
	fprintf(stderr, "Error setting up accept\n"); 
	ERR_print_errors_fp(stderr); 
	exit(0); 
} 
 
/* Wait for incoming connection */ 
if (BIO_do_accept(abio) <= 0) { 
	fprintf(stderr, "Error accepting connection\n"); 
	ERR_print_errors_fp(stderr); 
	exit(0); 
} 
fprintf(stderr, "Connection 1 established\n"); 
 
/* Retrieve BIO for connection */ 
cbio = BIO_pop(abio); 
 
BIO_puts(cbio, "Connection 1: Sending out Data on initial connection\n"); 
fprintf(stderr, "Sent out data on connection 1\n"); 
 
/* Wait for another connection */ 
if (BIO_do_accept(abio) <= 0) { 
	fprintf(stderr, "Error accepting connection\n"); 
	ERR_print_errors_fp(stderr); 
	exit(0); 
} 
fprintf(stderr, "Connection 2 established\n"); 
 
/* Close accept BIO to refuse further connections */ 
cbio2 = BIO_pop(abio); 
BIO_free(abio); 
 
BIO_puts(cbio2, "Connection 2: Sending out Data on second\n"); 
fprintf(stderr, "Sent out data on connection 2\n"); 
BIO_puts(cbio, "Connection 1: Second connection established\n"); 
 
/* Close the two established connections */ 
BIO_free(cbio); 
BIO_free(cbio2);
