这篇教程C++ BIO_pending函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中BIO_pending函数的典型用法代码示例。如果您正苦于以下问题:C++ BIO_pending函数的具体用法?C++ BIO_pending怎么用?C++ BIO_pending使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了BIO_pending函数的27个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: RSA_generate_key//Additional SSL Encryption functionsQList<QByteArray> AuthorizationManager::GenerateSSLKeyPair(){ const int kBits = 4096; const int kExp = 3; char *pem_key, *pem_key_pub; RSA *rsa = RSA_generate_key(kBits, kExp, 0, 0); //Private key in PEM form: BIO *bio = BIO_new(BIO_s_mem()); PEM_write_bio_RSAPrivateKey(bio, rsa, NULL, NULL, 0, NULL, NULL); int keylen = BIO_pending(bio); pem_key = (char *)malloc(keylen); /* Null-terminate */ BIO_read(bio, pem_key, keylen); QByteArray privkey = QByteArray::fromRawData(pem_key, keylen); //Public key in PEM form: BIO *bio2 = BIO_new(BIO_s_mem()); PEM_write_bio_RSA_PUBKEY(bio2, rsa); int keylen2 = BIO_pending(bio2); pem_key_pub = (char *)malloc(keylen2); /* Null-terminate */ BIO_read(bio2, pem_key_pub, keylen2); QByteArray pubkey = QByteArray::fromRawData(pem_key_pub, keylen2); BIO_free_all(bio); BIO_free_all(bio2); RSA_free(rsa); //See if the keys can be loaded for use later /*RSA *rsa1= NULL; BIO *keybio1 = NULL; //qDebug() << " - Generate keybio"; keybio1 = BIO_new_mem_buf(pubkey.data(), -1); if(keybio1!=NULL){ rsa1 = PEM_read_bio_RSA_PUBKEY(keybio1, &rsa1,NULL, NULL); qDebug() << "Can read new public key:" << (rsa1!=NULL); RSA_free(rsa1); } BIO_free_all(keybio1); RSA *rsa2= NULL; BIO *keybio2 = NULL; //qDebug() << " - Generate keybio"; keybio2 = BIO_new_mem_buf(privkey.data(), -1); if(keybio2!=NULL){ rsa2 = PEM_read_bio_RSAPrivateKey(keybio2, &rsa1,NULL, NULL); qDebug() << "Can read new private key:" << (rsa2!=NULL); RSA_free(rsa2); } BIO_free_all(keybio2); */ return (QList<QByteArray>() << pubkey << privkey);}
开发者ID:c3d2,项目名称:sysadm,代码行数:54,
示例2: log_tracebool Connection::readHandshake(){ log_trace("Connection::readHandshake"); std::streambuf* sb = _ios->rdbuf(); if( ! sb) return true; while(_ios->rdbuf()->in_avail() > 0) { const std::streamsize bufsize = 2000; char buf[bufsize]; std::streamsize gsize = std::min( sb->in_avail(), bufsize ); std::streamsize n = sb->sgetn(buf, gsize); const int written = BIO_write(_in, buf, static_cast<int>(n)); assert(written == n); if(written <= 0 || written != n) throw SslError("BIO_write"); log_debug("read " << n << " bytes from input"); } int ret = SSL_do_handshake(_ssl); log_debug("SSL_do_handshake returns " << ret); if( ret <= 0 ) { int sslerr = SSL_get_error(_ssl, ret); if( sslerr != SSL_ERROR_WANT_READ && sslerr != SSL_ERROR_WANT_WRITE) { if(sslerr == SSL_ERROR_SSL) { char buf[255]; ERR_error_string_n(ERR_get_error(), buf, sizeof(buf)); log_warn("handshake failed: " << buf); } throw HandshakeFailed("SSL handshake failed"); } } if( ret == 1 && BIO_pending(_out) <= 0 ) { _connected = true; } return BIO_pending(_out) <= 0 && SSL_want_read(_ssl); }
开发者ID:3Nigma,项目名称:frayon,代码行数:51,
示例3: log_timestatic void log_time(const int level, const char *txt, ASN1_TIME *t) {#ifndef HAVE_LIB_CYASSL char *cp; BIO *bio; int n; if(!t) return; bio=BIO_new(BIO_s_mem()); if(!bio) return; ASN1_TIME_print(bio, t); n=BIO_pending(bio); cp=str_alloc(n+1); n=BIO_read(bio, cp, n); if(n<0) { BIO_free(bio); str_free(cp); return; } cp[n]='/0'; BIO_free(bio); s_log(level, "%s: %s", txt, cp); str_free(cp);#else s_log(level, "%s: N/A", txt);#endif}
开发者ID:nmacs,项目名称:lm3s-uclinux,代码行数:28,
示例4: b64_decodeustringb64_decode (const ustring &message){ bool succeeded = false; auto_BIO mem (BIO_new (BIO_s_mem ())); auto_BIO filter (BIO_new (BIO_f_base64())); ustring rv; BIO_set_flags(((BIO *) filter), BIO_FLAGS_BASE64_NO_NL); BIO_push (filter, mem); if ((BIO_write (mem, message.data (), message.size ()) >= 0) && (1 == BIO_flush (mem))) { const unsigned int Length = BIO_pending (filter); { unsigned char *tmp_buf = (unsigned char *) VHTI_alloc (Length); const int nread = BIO_read(filter, tmp_buf, Length); if (nread >= 0) { succeeded = true; rv.assign (tmp_buf, nread); } free (tmp_buf); } } if (!succeeded) throw SSL_ERROR; return rv;}
开发者ID:darg0001,项目名称:evoting-systems,代码行数:35,
示例5: b64_encodeustringb64_encode (const char *buf, const size_t length){ bool succeeded = false; ustring rv; auto_BIO mem (BIO_new (BIO_s_mem ())); auto_BIO filter (BIO_new (BIO_f_base64())); if (!mem || !filter) throw SSL_ERROR; BIO_set_flags(((BIO *) filter), BIO_FLAGS_BASE64_NO_NL); BIO_push (filter, mem); if ((BIO_write (filter, buf, length) >= 0) && (1 == BIO_flush (filter))) { const int to_read = BIO_pending (mem); unsigned char *tmp_buf = (unsigned char *) VHTI_alloc (to_read + 1); if (BIO_read(mem, tmp_buf, to_read) >= 0) { tmp_buf[to_read] = '/0'; rv.assign (tmp_buf); succeeded = true; } free (tmp_buf); } if (!succeeded) throw SSL_ERROR; return rv;}
开发者ID:darg0001,项目名称:evoting-systems,代码行数:35,
示例6: myDirConfigstatic char *ssl_var_lookup_ssl_cert_dn_oneline(apr_pool_t *p, request_rec *r, X509_NAME *xsname){ char *result = NULL; SSLDirConfigRec *dc; int legacy_format = 0; if (r) { dc = myDirConfig(r); legacy_format = dc->nOptions & SSL_OPT_LEGACYDNFORMAT; } if (legacy_format) { char *cp = X509_NAME_oneline(xsname, NULL, 0); result = apr_pstrdup(p, cp); OPENSSL_free(cp); } else { BIO* bio; int n; unsigned long flags = XN_FLAG_RFC2253 & ~ASN1_STRFLGS_ESC_MSB; if ((bio = BIO_new(BIO_s_mem())) == NULL) return NULL; X509_NAME_print_ex(bio, xsname, 0, flags); n = BIO_pending(bio); if (n > 0) { result = apr_palloc(p, n+1); n = BIO_read(bio, result, n); result[n] = NUL; } BIO_free(bio); } return result;}
开发者ID:pexip,项目名称:os-apache2,代码行数:32,
示例7: while void OpenSSLBase::pushFunc() { int wantwrite; size_t wantread; long frombio; long tobio; while( ( wantwrite = BIO_pending( m_nbio ) ) > 0 ) { if( wantwrite > m_bufsize ) wantwrite = m_bufsize; if( !wantwrite ) break; frombio = BIO_read( m_nbio, m_buf, wantwrite ); if( m_handler ) m_handler->handleEncryptedData( this, std::string( m_buf, frombio ) ); } while( ( wantread = BIO_ctrl_get_read_request( m_nbio ) ) > 0 ) { if( wantread > m_recvBuffer.length() ) wantread = m_recvBuffer.length(); if( !wantread ) break; tobio = BIO_write( m_nbio, m_recvBuffer.c_str(), static_cast<int>( wantread ) ); m_recvBuffer.erase( 0, tobio ); } }
开发者ID:dvdjg,项目名称:GoapCpp,代码行数:33,
示例8: X509_NAME_print_ex/* * convert an X509_NAME to an RFC 2253 formatted string, optionally truncated * to maxlen characters (specify a maxlen of 0 for no length limit) */char *modssl_X509_NAME_to_string(apr_pool_t *p, X509_NAME *dn, int maxlen){ char *result = NULL; BIO *bio; int len; if ((bio = BIO_new(BIO_s_mem())) == NULL) return NULL; X509_NAME_print_ex(bio, dn, 0, XN_FLAG_RFC2253); len = BIO_pending(bio); if (len > 0) { result = apr_palloc(p, (maxlen > 0) ? maxlen+1 : len+1); if (maxlen > 0 && maxlen < len) { len = BIO_read(bio, result, maxlen); if (maxlen > 2) { /* insert trailing ellipsis if there's enough space */ apr_snprintf(result + maxlen - 3, 4, "..."); } } else { len = BIO_read(bio, result, len); } result[len] = NUL; } BIO_free(bio); return result;}
开发者ID:pexip,项目名称:os-apache2,代码行数:31,
示例9: LUA_FUNCTIONstatic LUA_FUNCTION(openssl_bio_gets){ BIO* bio = CHECK_OBJECT(1, BIO, "openssl.bio"); int len = luaL_optint(L, 2, BIO_pending(bio)); char* buf; int ret = 1; len = len > 0 ? len : 1024; buf = malloc(len); len = BIO_gets(bio, buf, len); if (len > 0) { lua_pushlstring(L, buf, len); ret = 1; } else if (BIO_should_retry(bio)) { lua_pushstring(L, ""); ret = 1; } else { lua_pushnil(L); lua_pushinteger(L, len); ret = 2; }; free(buf); return ret;}
开发者ID:Shaddy1884,项目名称:lua-openssl,代码行数:29,
示例10: hr_https_add_varsint hr_https_add_vars(struct http_session *hr, struct uwsgi_buffer *out) {// HTTPS (adapted from nginx) if (hr->session.ugs->mode == UWSGI_HTTP_SSL) { if (uwsgi_buffer_append_keyval(out, "HTTPS", 5, "on", 2)) return -1; hr->ssl_client_cert = SSL_get_peer_certificate(hr->ssl); if (hr->ssl_client_cert) { X509_NAME *name = X509_get_subject_name(hr->ssl_client_cert); if (name) { hr->ssl_client_dn = X509_NAME_oneline(name, NULL, 0); if (uwsgi_buffer_append_keyval(out, "HTTPS_DN", 8, hr->ssl_client_dn, strlen(hr->ssl_client_dn))) return -1; } if (uhttp.https_export_cert) { hr->ssl_bio = BIO_new(BIO_s_mem()); if (hr->ssl_bio) { if (PEM_write_bio_X509(hr->ssl_bio, hr->ssl_client_cert) > 0) { size_t cc_len = BIO_pending(hr->ssl_bio); hr->ssl_cc = uwsgi_malloc(cc_len); BIO_read(hr->ssl_bio, hr->ssl_cc, cc_len); if (uwsgi_buffer_append_keyval(out, "HTTPS_CC", 8, hr->ssl_cc, cc_len)) return -1; } } } } } else if (hr->session.ugs->mode == UWSGI_HTTP_FORCE_SSL) { hr->force_https = 1; } return 0;}
开发者ID:burhan,项目名称:uwsgi,代码行数:30,
示例11: generate_rsa_pkeyint generate_rsa_pkey() { FILE * fp; RSA * rsa_priv_key; const int kBits = 1024; const int kExp = 3; int keylen; char *pem_key; rsa_priv_key = RSA_generate_key(kBits, kExp, 0, 0); /* To get the C-string PEM form: */ BIO *bio = BIO_new(BIO_s_mem()); PEM_write_bio_RSAPrivateKey(bio, rsa_priv_key, NULL, NULL, 0, NULL, NULL); keylen = BIO_pending(bio); pem_key = calloc(keylen + 1, 1); /* Null-terminate */ BIO_read(bio, pem_key, keylen); fp = fopen(f_rsa_private_key, "w"); if (fp) { fwrite(pem_key, keylen, 1, fp); fclose(fp); } else { LOG(ERROR, "[API] RSA key generation failed, could not write key to %s", f_rsa_private_key); return -1; } LOG(VERBOSE, "[API] Private key created:%s", pem_key); BIO_free_all(bio); free(pem_key); pem_key = NULL; return 0;}
开发者ID:macm00v,项目名称:vmcam,代码行数:34,
示例12: BIO_pendingvoid OpenSSLContext::sendPendingDataToNetwork() { int size = BIO_pending(writeBIO_); if (size > 0) { SafeByteArray data; data.resize(size); BIO_read(writeBIO_, vecptr(data), size); onDataForNetwork(data); }}
开发者ID:smuralireddy,项目名称:swift,代码行数:9,
示例13: SSLStateMachine_write_can_extractint SSLStateMachine_write_can_extract(SSLStateMachine *pMachine) { int n=BIO_pending(pMachine->pbioWrite); if(n) fprintf(stderr,"There is encrypted data available to write/n"); else fprintf(stderr,"There is no encrypted data available to write/n"); return n; }
开发者ID:0culus,项目名称:openssl,代码行数:10,
示例14: DirCliGetX509NameDWORDDirCliGetX509Name( X509_NAME *pCertName, DWORD dwFlags, PSTR* ppszSubjectDN ){ DWORD dwError = 0; size_t len = 0; BIO* pBioMem = NULL; PSTR pszSubjectName = NULL; pBioMem = BIO_new(BIO_s_mem()); if (!pBioMem) { dwError = ERROR_OUTOFMEMORY; BAIL_ON_VMAFD_ERROR(dwError); } X509_NAME_print_ex(pBioMem, pCertName, 0, dwFlags); len = BIO_pending(pBioMem); if (len <= 0) { dwError = ERROR_INVALID_DATA; BAIL_ON_VMAFD_ERROR(dwError); } dwError = VmAfdAllocateMemory(len + 1, (PVOID*)&pszSubjectName); BAIL_ON_VMAFD_ERROR(dwError); if (BIO_read(pBioMem, pszSubjectName, len) != len) { dwError = ERROR_INVALID_STATE; BAIL_ON_VMAFD_ERROR(dwError); } *ppszSubjectDN = pszSubjectName;cleanup: if (pBioMem) { BIO_free(pBioMem); } return dwError;error: *ppszSubjectDN = NULL; goto cleanup;}
开发者ID:Dan-McGee,项目名称:lightwave,代码行数:55,
示例15: read_socket void Engine::read_socket(DataInputStream & network_in) { if( BIO_pending(bioIn) > 64*1024 ) // Enough for 4 ssl packets return; Data data; if( network_in.read(data) == 0 ) return; wLog("sock.read: %d", data.getSize()); int len = BIO_write(bioIn, data.getData(), data.getSize()); // Consumes everything by docs wLog("BIO_write: %d", len); }
开发者ID:alex-dengx,项目名称:craplib,代码行数:11,
示例16: after__wrkint after__wrk(evt_tls_t *c, void *buf){ int pending = BIO_pending(c->app_bio_); if ( !(pending > 0) ) return 0; int p = BIO_read(c->app_bio_, buf, pending); assert(p == pending); if ( c->writer) { c->writer(c, buf, p); } return p;}
开发者ID:sandeep-parmar,项目名称:libuv-tls,代码行数:14,
示例17: openssl_setenv_X509_add_PEMstatic void openssl_setenv_X509_add_PEM(liVRequest *vr, X509 *x509, const gchar *key, guint key_len) { gint n; GString *v = vr->wrk->tmp_str; BIO *bio; if (NULL != (bio = BIO_new(BIO_s_mem()))) { PEM_write_bio_X509(bio, x509); n = BIO_pending(bio); g_string_set_size(v, n); BIO_read(bio, v->str, n); BIO_free(bio); li_environment_set(&vr->env, key, key_len, GSTR_LEN(v)); }}
开发者ID:Aivaras,项目名称:lighttpd2,代码行数:14,
示例18: SSL_X509_getIDs/* return an array of (RFC 6125 coined) DNS-IDs and CN-IDs in a certificate */BOOL SSL_X509_getIDs(apr_pool_t *p, X509 *x509, apr_array_header_t **ids){ STACK_OF(GENERAL_NAME) *names; BIO *bio; X509_NAME *subj; char **cpp; int i, n; if (!x509 || !(*ids = apr_array_make(p, 0, sizeof(char *)))) { *ids = NULL; return FALSE; } /* First, the DNS-IDs (dNSName entries in the subjectAltName extension) */ if ((names = X509_get_ext_d2i(x509, NID_subject_alt_name, NULL, NULL)) && (bio = BIO_new(BIO_s_mem()))) { GENERAL_NAME *name; for (i = 0; i < sk_GENERAL_NAME_num(names); i++) { name = sk_GENERAL_NAME_value(names, i); if (name->type == GEN_DNS) { ASN1_STRING_print_ex(bio, name->d.ia5, ASN1_STRFLGS_ESC_CTRL| ASN1_STRFLGS_UTF8_CONVERT); n = BIO_pending(bio); if (n > 0) { cpp = (char **)apr_array_push(*ids); *cpp = apr_palloc(p, n+1); n = BIO_read(bio, *cpp, n); (*cpp)[n] = NUL; } } } BIO_free(bio); } if (names) sk_GENERAL_NAME_pop_free(names, GENERAL_NAME_free); /* Second, the CN-IDs (commonName attributes in the subject DN) */ subj = X509_get_subject_name(x509); i = -1; while ((i = X509_NAME_get_index_by_NID(subj, NID_commonName, i)) != -1) { cpp = (char **)apr_array_push(*ids); *cpp = SSL_X509_NAME_ENTRY_to_string(p, X509_NAME_get_entry(subj, i)); } return apr_is_empty_array(*ids) ? FALSE : TRUE;}
开发者ID:Summyhaha,项目名称:Tomcat,代码行数:49,
示例19: BIO_pendingstatic char *get_cert_PEM(X509 *xs){ char *result = NULL; BIO *bio; if ((bio = BIO_new(BIO_s_mem())) == NULL) return NULL; if (PEM_write_bio_X509(bio, xs)) { int n = BIO_pending(bio); result = malloc(n+1); n = BIO_read(bio, result, n); result[n] = '/0'; } BIO_free(bio); return result;}
开发者ID:ajperalt,项目名称:jbpm-bpel-ftl,代码行数:16,
示例20: ASN1_UTCTIME_printstatic char *get_cert_valid(ASN1_UTCTIME *tm){ char *result; BIO* bio; int n; if ((bio = BIO_new(BIO_s_mem())) == NULL) return NULL; ASN1_UTCTIME_print(bio, tm); n = BIO_pending(bio); result = malloc(n+1); n = BIO_read(bio, result, n); result[n] = '/0'; BIO_free(bio); return result;}
开发者ID:ajperalt,项目名称:jbpm-bpel-ftl,代码行数:16,
示例21: i2a_ASN1_INTEGERstatic char *get_cert_serial(X509 *xs){ char *result; BIO *bio; int n; if ((bio = BIO_new(BIO_s_mem())) == NULL) return NULL; i2a_ASN1_INTEGER(bio, X509_get_serialNumber(xs)); n = BIO_pending(bio); result = malloc(n+1); n = BIO_read(bio, result, n); result[n] = '/0'; BIO_free(bio); return result;}
开发者ID:ajperalt,项目名称:jbpm-bpel-ftl,代码行数:16,
示例22: swSSL_get_client_certificateint swSSL_get_client_certificate(SSL *ssl, char *buffer, size_t length){ long len; BIO *bio; X509 *cert; cert = SSL_get_peer_certificate(ssl); if (cert == NULL) { return SW_ERR; } bio = BIO_new(BIO_s_mem()); if (bio == NULL) { swWarn("BIO_new() failed."); X509_free(cert); return SW_ERR; } if (PEM_write_bio_X509(bio, cert) == 0) { swWarn("PEM_write_bio_X509() failed."); goto failed; } len = BIO_pending(bio); if (len < 0 && len > length) { swWarn("certificate length[%ld] is too big.", len); goto failed; } int n = BIO_read(bio, buffer, len); BIO_free(bio); X509_free(cert); return n;failed: BIO_free(bio); X509_free(cert); return SW_ERR;}
开发者ID:2yeslater,项目名称:swoole-src,代码行数:47,
示例23: log_timestatic void log_time(const int level, const char *txt, ASN1_TIME *t) { char *cp; BIO *bio; int n; if(!t) return; bio=BIO_new(BIO_s_mem()); ASN1_TIME_print(bio, t); n=BIO_pending(bio); cp=str_alloc(n+1); n=BIO_read(bio, cp, n); cp[n]='/0'; BIO_free(bio); s_log(level, "%s: %s", txt, cp); str_free(cp);}
开发者ID:liuhangyu,项目名称:stunnel,代码行数:17,
示例24: BIO_pendingvoidBase64Encode::fillOutputBuffer(){ int nRead = BIO_pending(m_impl->m_sink); if (nRead <= 0) return; // there is something to read from BIO auto buffer = make_unique<OBuffer>(nRead); int rLen = BIO_read(m_impl->m_sink, buffer->data(), nRead); if (rLen < 0) return; if (rLen < nRead) buffer->erase(buffer->begin() + rLen, buffer->end()); setOutputBuffer(std::move(buffer));}
开发者ID:cawka,项目名称:ndn-cxx,代码行数:17,
示例25: win_new_chainstatic void win_new_chain(CLI *c) { BIO *bio; int i, len; X509 *peer=NULL; STACK_OF(X509) *sk; char *chain; if(c->opt->chain) /* already cached */ return; /* this race condition is safe to ignore */ bio=BIO_new(BIO_s_mem()); if(!bio) return; sk=SSL_get_peer_cert_chain(c->ssl); for(i=0; sk && i<sk_X509_num(sk); i++) { peer=sk_X509_value(sk, i); PEM_write_bio_X509(bio, peer); } if(!sk || !c->opt->option.client) { peer=SSL_get_peer_certificate(c->ssl); if(peer) { PEM_write_bio_X509(bio, peer); X509_free(peer); } } len=BIO_pending(bio); if(len<=0) { s_log(LOG_INFO, "No peer certificate received"); BIO_free(bio); return; } chain=str_alloc(len+1); len=BIO_read(bio, chain, len); if(len<0) { s_log(LOG_ERR, "BIO_read failed"); BIO_free(bio); str_free(chain); return; } chain[len]='/0'; BIO_free(bio); str_detach(chain); /* to prevent automatic deallocation of cached value */ c->opt->chain=chain; /* this race condition is safe to ignore */ PostMessage(hwnd, WM_NEW_CHAIN, c->opt->section_number, 0); s_log(LOG_DEBUG, "Peer certificate was cached (%d bytes)", len);}
开发者ID:nmacs,项目名称:lm3s-uclinux,代码行数:45,
示例26: ASN1_STRING_print_ex/* convert a NAME_ENTRY to UTF8 string */char *SSL_X509_NAME_ENTRY_to_string(apr_pool_t *p, X509_NAME_ENTRY *xsne){ char *result = NULL; BIO* bio; int len; if ((bio = BIO_new(BIO_s_mem())) == NULL) return NULL; ASN1_STRING_print_ex(bio, X509_NAME_ENTRY_get_data(xsne), ASN1_STRFLGS_ESC_CTRL|ASN1_STRFLGS_UTF8_CONVERT); len = BIO_pending(bio); result = apr_palloc(p, len+1); len = BIO_read(bio, result, len); result[len] = NUL; BIO_free(bio); ap_xlate_proto_from_ascii(result, len); return result;}
开发者ID:Summyhaha,项目名称:Tomcat,代码行数:19,
示例27: X509_NAME_print_exchar *dn_oneline(X509_NAME *xn) { BIO* bio; int n; char *result; unsigned long flags = XN_FLAG_RFC2253; if ((bio = BIO_new(BIO_s_mem())) == NULL) { return NULL; } X509_NAME_print_ex(bio, xn, 0, flags); n = BIO_pending(bio); result = (char *)malloc(sizeof(char *) * (n+1)); n = BIO_read(bio, result, n); result[n] = '/0'; BIO_free(bio); return result;}
开发者ID:cbsrobot,项目名称:OpenDCP,代码行数:19,
注:本文中的BIO_pending函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ BIO_printf函数代码示例 C++ BIO_new_socket函数代码示例 |