Tunìl Java Socket HTTP CONNECT a cikin OpenJDK 25
Yi amfani da hanyar socket ta proxy HTTP a cikin OpenJDK 25 don isa sabis ɗin TCP da aka yarda, yayin da ka raba ƙarshen proxy da inda ake zuwa.
Wani ƙa'idar TCP ta musamman na iya wuce ta proxy HTTP lokacin da proxy ɗin ya ba da izinin CONNECT zuwa inda ake zuwa. Ba dole ba ne ƙa'idar aikace-aikacen ta zama HTTP: HTTP ne ke kafa tunìl ɗin, sannan aikace-aikacen ke musayar nasa bytes a ciki.
OpenJDK 25 yana ba da hanyar proxy HTTP a cikin Socket(Proxy). Aiwatarwarsa na yin musayar CONNECT kuma yana mayar da socket ɗin da aka haɗa don aikace-aikacen ya yi amfani da shi.
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();
}Wannan ɓangaren yana amfani da azuzuwan daga java.net da java.io. Maye gurbin ƙarshen biyu kuma yi musayar ƙa'idar kafin ka bar tubalin try. Don manufar TCP ta jama'a da aka yarda, zaɓi 'yan takarar HTTP daga jerin proxy HTTP kawai bayan ka duba izinin CONNECT don tashar wannan manufar. Adireshin proxy shi ne inda Java ke fara haɗawa; adireshin da aka ba connect yana nuna sabis ɗin da proxy ya kamata ya isa.
Inda ba a warware ba yana riƙe da sunan mai masaukin don buƙatar CONNECT ta wannan aiwatarwa. Amma InetSocketAddress da aka warware yana ba da adireshin IP ɗin da aka warware ga wannan buƙata maimakon haka. Wannan bambanci yana da muhimmanci lokacin da proxy dole ya warware sunan sabis ɗin ko ya yi amfani da manufar da ta dogara da sunan mai masauki.
Abin da haɗi mai nasara ke barin maka
Rafukan da suka samu suna ɗaukar bayanan sabis ɗin da aka tunìla. Ba sa fallasa wata amsa HTTP daban da aikace-aikacenka ya kamata ya karanta ya watsar. Ƙara musayar CONNECT ta biyu zai aika rubutun HTTP zuwa sabis ɗin bayan JDK ya riga ya kafa tunìl ɗin.
Misalin yana ba da lokacin ƙarewar haɗi da lokacin ƙarewar karatun socket; waɗannan sarrafawa ne daban, ba wani ƙayyadadden wa'adi ɗaya na zaman aikace-aikacen ba.
Izinin CONNECT har yanzu na proxy ne. Ƙarshen da ke tura buƙatun yanar gizo na yau da kullum na iya ƙin tashar sabis ɗin ko ya buƙaci tabbatarwa kafin ya buɗe tunìl. Ka raba waɗannan gazawar daga uwar garken da ya karɓi tunìl ɗin amma daga baya ya ƙi ƙa'idar aikace-aikacenka.
Idan wannan ƙa'idar tana buƙatar TLS, tattauna TLS ta socket ɗin da aka haɗa tare da sunan mai masaukin da aka nufa na sabis ɗin da kuma binciken takardar shaida na yau da kullum. CONNECT shi kaɗai ba ya ɓoye rafin. Don ainihin HTTP API, abokin ciniki na HTTP ya kasance mafi dacewa mu'amala domin yana kuma sarrafa saƙonnin HTTP.