सानुकूल TCP प्रोटोकॉल HTTP प्रॉक्सीमधून जाऊ शकतो जेव्हा ती प्रॉक्सी गंतव्याकडे CONNECT ला परवानगी देते. अनुप्रयोग प्रोटोकॉलला HTTP होण्याची गरज नाही: HTTP बोगदा उभा करते, त्यानंतर अनुप्रयोग आपले बाइट त्यात देवाणघेवाण करते.

OpenJDK 25 Socket(Proxy) मध्ये HTTP प्रॉक्सी मार्ग पुरवते. त्याची अंमलबजावणी CONNECT देवाणघेवाण करते आणि अनुप्रयोगाला वापरण्यासाठी जोडलेला सॉकेट परत करते.

Proxy route = new Proxy(
    Proxy.Type.HTTP,
    new InetSocketAddress("proxy.example", 8080));

try (Socket socket = new Socket(route)) {
    socket.setSoTimeout(10000);
    socket.connect(
        InetSocketAddress.createUnresolved("tcp-service.example", 8443),
        5000);
    InputStream input = socket.getInputStream();
    OutputStream output = socket.getOutputStream();
}

हा तुकडा java.net आणि java.io मधील वर्ग वापरतो. दोन्ही टोके बदला आणि try ब्लॉक सोडण्यापूर्वी प्रोटोकॉल देवाणघेवाण करा. परवानगी असलेल्या सार्वजनिक TCP लक्ष्यासाठी, त्या लक्ष्याच्या पोर्टसाठी CONNECT परवानगी तपासल्यानंतरच HTTP प्रॉक्सी यादीतून HTTP उमेदवार निवडा. प्रॉक्सीचा पत्ता म्हणजे Java प्रथम जिथे जोडते ते ठिकाण; connect ला दिलेला पत्ता प्रॉक्सीने पोहोचावयाच्या सेवेची ओळख करून देतो.

न सोडवलेले गंतव्य या अंमलबजावणीच्या CONNECT विनंतीसाठी त्याचे होस्टनाव राखते. उलट, सोडवलेले InetSocketAddress त्या विनंतीला त्याचा सोडवलेला IP पत्ता पुरवते. प्रॉक्सीला सेवेचे नाव सोडवायचे असल्यास किंवा होस्टनाव-आधारित धोरण लागू करायचे असल्यास हा फरक महत्त्वाचा ठरतो.

यशस्वी कनेक्शन तुमच्याकडे काय ठेवते

मिळणारे प्रवाह बोगद्यातील सेवेचा डेटा वाहतात. तुमच्या अनुप्रयोगाने वाचून टाकून द्यायचा स्वतंत्र HTTP प्रतिसाद ते उघड करत नाहीत. दुसरी CONNECT देवाणघेवाण जोडल्यास JDK ने बोगदा आधीच उभा केल्यानंतर सेवेला HTTP मजकूर पाठवला जाईल.

उदाहरण कनेक्शन कालमर्यादा आणि सॉकेट वाचन कालमर्यादा देते; ते स्वतंत्र नियंत्रणे आहेत, अनुप्रयोग सत्रासाठी एकूण एकच अंतिम मुदत नाही.

CONNECT परवानगी अजूनही प्रॉक्सीकडे आहे. सामान्य वेब विनंत्या पुढे पाठवणारे टोक सेवेचा पोर्ट नाकारू शकते किंवा बोगदा उघडण्यापूर्वी प्रमाणीकरण मागू शकते. त्या अपयशांना बोगदा स्वीकारून नंतर तुमचा अनुप्रयोग प्रोटोकॉल नाकारणाऱ्या सर्व्हरपासून वेगळे ठेवा.

त्या प्रोटोकॉलला TLS आवश्यक असल्यास, जोडलेल्या सॉकेटमधून सेवेचे इच्छित होस्टनाव आणि नेहमीच्या प्रमाणपत्र तपासण्यांसह TLS वाटाघाटी करा. केवळ CONNECT प्रवाह एन्क्रिप्ट करत नाही. खऱ्या HTTP API साठी, HTTP क्लायंट HTTP संदेशही हाताळत असल्याने अधिक सोयीचा इंटरफेस राहतो.

संबंधित लेख