मैंने एक एसएसएल सर्वर से बातचीत करने के लिए ओपनएसएसएल एपीआई का उपयोग करके एक एसएसएल क्लाइंट लिखा है। ओपनएसएसएल साइट में मैंने सीखा कि कुछ डेटा लिखने के बाद लिखने वाले बफर को फ्लश करने की जरूरत है। मैं अपने क्लाइंट प्रोग्राम में SSL_Write और SSL_Read का उपयोग कर रहा हूं। ओपनएसएसएल साइट के सुझाव के अनुसार मैंने बीआईओ_फ्लश (बीआईओ *) का उपयोग कर डेटा फ्लश करने की कोशिश की, मुझे यहां क्रैश हो रहा है। एसएसएल पुस्तकालयोंएसएसएल लिखने वाले बफर को फ्लश करने का कोई तरीका है
मैं उपयोग कर रहा हूँ this site
यहाँ से मिला मैं के बारे में है कि क्या BIO_flush पढ़ने बफर पाती है या बफर लिखने स्पष्ट नहीं कर रहा हूँ .. :-( तो मैं सिर्फ जानना चाहता था वहाँ के लिए किसी भी अन्य तरीकों से है एसएसएल लिखने बफर फ्लश ...?
यहाँ मेरी क्लाइंट प्रोग्राम के बारे में जानकारी है।
- एसएसएल वस्तु (mSsl) SSL_new
- बनाने की प्रक्रिया का उपयोग कर बनाया जा रहा है टिंग TCP सॉकेट और सर्वर
- जैव वस्तु (mBio) BIO_new_socket का उपयोग कर बनाया जा रहा है के साथ संबंध बनाने (socket_id, BIO_NOCLOSE)
- SSL_set_bio (mSsl, mBio, mBio) का उपयोग एसएसएल वस्तु के लिए जैव वस्तु की स्थापना;
- एसएसएल_सेट_एफडी (एमएसएसएल, सॉकेट_आईडी) का उपयोग कर एसएसएल ऑब्जेक्ट में सॉकेट सेट करना;
- SSL_Connect (mSsl) का उपयोग कर सर्वर के साथ SSL कनेक्शन बनाना;
उपर्युक्त चरणों के बाद मैं लिखने और पढ़ने के लिए दो अलग-अलग धागे शुरू कर रहा हूं। सर्वर को डेटा लिखने के लिए थ्रेड लिखें SSL_write का उपयोग करें और थ्रेड पढ़ें सर्वर से डेटा पढ़ने के लिए SSL_Read का उपयोग करता है।
लिखें धागा में SSL_Write का उपयोग कर प्रत्येक पैकेट लेखन के बाद मैं BIO_flush (mBio) बोल रहा हूँ।
पूरे कार्यक्रम में मैं केवल जैव बफर फ्लश करने के लिए इस जगह में एमबीओ ऑब्जेक्ट का उपयोग कर रहा हूं।
जब मैं BIO_flush में दुर्घटनाग्रस्त में कुछ पैकेट, कार्यक्रम भेज रहा है ... डंप BIO_ctrl समारोह में अपनी कहते हैं के अनुसार शुरू करते हैं। मुझे इससे ज्यादा कुछ नहीं मिल रहा है।
क्या कोई भी लाइब्रेरी का उपयोग करता है जिसे मैंने उपरोक्त लिंक प्रदान किया है और एक ही समस्या का सामना कर रहा है ..? यदि हां, तो कृपया मुझे बताएं कि क्या आप समाधान जानते हैं।
कोई धागा तुल्यकालन नियम BIO_flush उपयोग करने के लिए है() ...? मेरा मतलब है कि BIO_flush SSL_Read को कॉल करना उसी समय ऐसा नहीं होना चाहिए ...?