BIO_S_MEM(3ssl) OpenSSL BIO_S_MEM(3ssl) BIO_s_secmem, BIO_s_dgram_mem, BIO_s_mem, BIO_set_mem_eof_return, BIO_get_mem_data, BIO_set_mem_buf, BIO_get_mem_ptr, BIO_new_mem_buf - BIO #include const BIO_METHOD *BIO_s_mem(void); const BIO_METHOD *BIO_s_dgram_mem(void); const BIO_METHOD *BIO_s_secmem(void); BIO_set_mem_eof_return(BIO *b, int v); long BIO_get_mem_data(BIO *b, char **pp); BIO_set_mem_buf(BIO *b, BUF_MEM *bm, int c); BIO_get_mem_ptr(BIO *b, BUF_MEM **pp); BIO *BIO_new_mem_buf(const void *buf, int len); BIO_s_mem() BIO . BIO BIO / /. BIO BUF_MEM . BIO_s_secmem() BIO_s_mem() . BIO_s_dgram_mem() BIO . BIO_write(3) BIO . BIO_read(3) . BIO_read(3) BIO_write(3) BIO_write(3) . BIO_read(3) . BIO_read(3) . . BIO_write(3) 0 . BIO_read(3) BIO " " ( BIO_should_retry(3) ). BIO BIO_eof(3). BIO . BIO BIO. BIOs BIO_s_dgram_mem() BIO_gets() BIO_puts(). BIO_s_dgram_mem() BIO_sendmmsg(3) BIO_recvmmsg(3) BIO_ADDR MTU BIO_s_dgram_pair(3). BIO_CLOSE BIO BUF_MEM . BIO_reset() BIO BIO_FLAGS_NONCLEAR_RST . BIO BIO . BIO_eof() BIO. BIO_ctrl_pending() . BIO_set_mem_eof_return() BIO b . v BIO EOF ( BIO_should_retry(b) ). v v ( BIO_read_retry(b) ). v -1. BIOs . BIO_get_mem_data() *pp BIO . . . BIO_set_close(). BIO_set_mem_buf() BUF_MEM bm c c BIO_CLOSE BIO_NOCLOSE. . BIO_get_mem_ptr() BUF_MEM *pp. . BIO_new_mem_buf() BIO len buf len -1 buf strlen. BIO . BIO. : BIO. BIO_s_dgram_mem(). BIOs : . BIO_s_dgram_mem() BIO_set_write_buf_size(3) . . ( ) BIO - BIO . BIO . BIO_set_mem_buf() BIO secmem dgram . BIO - . . BIO BIO . BIO - BIO_reset() BIO -. BIO -. BIO_get_mem_ptr() BIO BUF_MEM . BIO BIO_NOCLOSE BUF_MEM NULL . BIO_reset() BIO - BIO_FLAGS_NONCLEAR_RST BIO . BIO . . BIO_get_mem_ptr() BIO_reset() BIO_FLAGS_NONCLEAR_RST . BIO_set_close() BIO_NOCLOSE BUF_MEM BIO __ . . BIO_s_mem() BIO_s_dgram_mem() BIO_s_secmem() BIO_METHOD . BIO_set_mem_eof_return() BIO_set_mem_buf() BIO_get_mem_ptr() 1 0 . BIO_get_mem_data() 0 b NULL . BIO_new_mem_buf() BIO NULL . BIO : BIO *mem = BIO_new(BIO_s_mem()); BIO_puts(mem, "Hello World\n"); BIO : char data[] = "Hello World"; BIO *mem = BIO_new_mem_buf(data, -1); BUF_MEM BIO BIO: BUF_MEM *bptr; BIO_get_mem_ptr(mem, &bptr); BIO_set_close(mem, BIO_NOCLOSE); /* So BIO_free() leaves BUF_MEM alone */ BIO_free(mem); BUF_MEM BIO BUF_MEM: BUF_MEM *bptr; char *data; BIO_get_mem_data(bio, &data); BIO_get_mem_ptr(bio, &bptr); BIO_set_close(mem, BIO_NOCLOSE); /* So BIO_free orphans BUF_MEM */ BIO_free(bio); bptr->data = NULL; /* Tell BUF_MEM to orphan data */ BUF_MEM_free(bptr); ... free(data); BIO_s_dgram_mem() OpenSSL 3.2. 2000-2024 OpenSSL. . Apache 2.0 ( ""). . LICENSE . 3 . . : . 3.6.2 7 2026 BIO_S_MEM(3ssl)