په 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 تبادله به خدمت ته HTTP متن واستوي وروسته له هغې چې JDK لا دمخه تونل جوړ کړی وي.
بېلګه د اړیکې وخت حد او د ساکټ لوستلو وخت حد ټاکي؛ دا جلا کنټرولونه دي، نه د اپلیکیشن غونډې لپاره یو ټولیز پای وخت.
د CONNECT اجازه لا هم د پروکسي ده. هغه پای ټکی چې عادي ویب غوښتنې وړاندې لیږدوي کیدای شي د خدمت پورټ رد کړي یا د تونل خلاصولو مخکې تصدیق وغواړي. هغه ناکامۍ له هغه سرور څخه جلا وساتئ چې تونل مني خو وروسته ستاسو د اپلیکیشن پروتوکول ردوي.
که هغه پروتوکول TLS ته اړتیا لري، TLS د نښلول شوي ساکټ له لارې د خدمت د پام وړ کوربه نوم او نورمال سند تایید سره خبرې وکړئ. یوازې CONNECT جریان نه کوډ کوي. د ریښتیني HTTP API لپاره، HTTP مراجع لا هم ډیره اسانه لار ده ځکه چې د HTTP پیغامونه هم سمبالوي.