Ein serstøk TCP-protokoll kann ferðast gjøgnum ein HTTP proxy, tá tann proxyin loyvir CONNECT til málið. Applikatiónsprotokollin má ikki gerast HTTP: HTTP setur tunnilin upp, og síðani skiftir applikatiónin sínar egnu byte út inni í honum.

OpenJDK 25 bjóðar eina HTTP proxy-leið í Socket(Proxy). Uppsetanin ger CONNECT-útskiftið og letur eitt tengt socket aftur til applikatiónina at brúka.

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();
}

Hetta brotið brúkar klássir úr java.net og java.io. Skift báðum endapunktunum út og ger protokoll-útskiftið, áðrenn tú fer út úr try-blokkinum. Fyri eitt loyvt alment TCP-mál, vel HTTP-evni úr HTTP proxy-listanum fyrst eftir at tú hevur kannað CONNECT-loyvið fyri portið á tí málinum. Proxy-adressan er har Java tengir fyrst; adressan, sum verður send til connect, eyðkennir tænastuna, sum proxyin skal ná.

Óloysta málið varðveitir vertsnavnið hjá sær fyri CONNECT-umbøðina í hesi uppsetanini. Ein loyst InetSocketAddress letur tí ímóti sína loystu IP-adressu til ta umbøðina. Hesin munurin hevur týdning, tá proxyin skal loysa tænastunavnið ella seta í verk stevnu grundaða á vertsnavn.

Hvat ein eydnuð samband letur teg eftir við

Teir úrslitandi streymarnir bera dáta frá tí tunnlaðu tænastuni. Teir avdúka ikki eitt serstakt HTTP-svar, sum applikatiónin tín skal lesa og kasta burtur. At leggja eitt annað CONNECT-útskifti aftrat fór at sent HTTP-tekst til tænastuna, eftir at JDK longu hevur sett tunnilin upp.

Dømið setur eina sambandstíðarmark og eina lesitíðarmark fyri socketið; tey eru sjálvstøðug stýring, ikki ein felags frestur fyri applikatiónssessjónina.

CONNECT-loyvið hoyrir framvegis til proxyina. Ein endapunktur, sum sendir vanligar vevumbøðir víðari, kann vraka portið á tænastuni ella krevja samvátting, áðrenn ein tunnil verður opnaður. Halt tey miseydnuðu atskild frá einum ambætara, sum tekur ímóti tunnlinum men seinni vrakar applikatiónsprotokollina tína.

Um tann protokollin tørvar TLS, samráð TLS gjøgnum tað tengdu socketið við ætlaða vertsnavnið á tænastuni og vanligar váttanarkanningar. CONNECT eitt sjálvt krypterar ikki streymin. Fyri eina veruliga HTTP-API er ein HTTP-klient framvegis tann hegntari grænseflatan, tí hon viðgerð eisini HTTP-boð.

Skyldar greinar