OpenJDK 25 இல் Java Socket HTTP CONNECT சுரங்கப்பாதைகள்
OpenJDK 25 இல் HTTP ப்ராக்ஸி சாக்கெட் பாதையைப் பயன்படுத்தி அனுமதிக்கப்பட்ட TCP சேவையை அடையுங்கள், ப்ராக்ஸி முனைப்புள்ளியும் இலக்கும் தனித்தனியாக இருக்கட்டும்.
ஒரு தனிப்பயன் 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 கிளையண்டே மிகவும் வசதியான இடைமுகமாக உள்ளது.