Twneli Java Socket HTTP CONNECT yn OpenJDK 25
Defnyddiwch lwybr soced HTTP proxy yn OpenJDK 25 i gyrraedd gwasanaeth TCP a ganiateir, gan gadw pen draw'r proxy a'r cyrchfan ar wahân.
Gall protocol TCP wedi'i deilwra deithio trwy proxy HTTP pan fydd y proxy hwnnw'n caniatáu CONNECT i'r gyrchfan. Nid oes rhaid i brotocol yr ap ddod yn HTTP: mae HTTP yn sefydlu'r twnnel, yna mae'r ap yn cyfnewid ei feitiau ei hun y tu mewn iddo.
Mae OpenJDK 25 yn darparu llwybr trwy broxy HTTP yn Socket(Proxy). Mae ei weithrediad yn gwneud y gyfnewidfa CONNECT ac yn dychwelyd soced cysylltiedig i'r ap ei ddefnyddio.
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();
}Mae'r darn hwn yn defnyddio dosbarthiadau o java.net a java.io. Amnewidiwch y ddau ben draw a gwnewch y gyfnewidfa brotocol cyn gadael y bloc try. Ar gyfer targed TCP cyhoeddus a ganiateir, dewiswch ymgeiswyr HTTP o'r rhestr proxy HTTP dim ond ar ôl gwirio caniatâd CONNECT ar gyfer porth y targed hwnnw. Cyfeiriad y proxy yw'r lle y mae Java yn cysylltu gyntaf; mae'r cyfeiriad a roddir i connect yn nodi'r gwasanaeth y dylai'r proxy ei gyrraedd.
Mae'r gyrchfan heb ei datrys yn cadw ei henw gwesteiwr ar gyfer cais CONNECT y gweithrediad hwn. Mae InetSocketAddress wedi'i datrys yn darparu ei gyfeiriad IP datrysiedig i'r cais hwnnw yn lle hynny. Mae'r gwahaniaeth hwnnw'n bwysig pan fo'n rhaid i'r proxy ddatrys enw'r gwasanaeth neu gymhwyso polisi sy'n seiliedig ar enw gwesteiwr.
Beth mae cysylltiad llwyddiannus yn ei adael i chi
Mae'r ffrydiau sy'n deillio o hynny'n cario data'r gwasanaeth twneli. Nid ydynt yn datgelu ymateb HTTP ar wahân y dylai'ch ap ei ddarllen a'i daflu. Byddai ychwanegu ail gyfnewidfa CONNECT yn anfon testun HTTP i'r gwasanaeth ar ôl i'r JDK sefydlu'r twnnel yn barod.
Mae'r enghraifft yn darparu terfyn amser cysylltu a therfyn amser darllen soced; mae'r rheini'n rheolyddion ar wahân, nid un dyddiad cau cyffredinol ar gyfer sesiwn yr ap.
Mae caniatâd CONNECT yn dal i berthyn i'r proxy. Gall pen draw sy'n anfon ceisiadau gwe cyffredin ymlaen wrthod porth y gwasanaeth neu ofyn am ddilysiad cyn agor twnnel. Cadwch y methiannau hynny ar wahân i weinydd sy'n derbyn y twnnel ond wedyn yn gwrthod eich protocol ap.
Os oes angen TLS ar y protocol hwnnw, negodwch TLS trwy'r soced cysylltiedig ag enw gwesteiwr bwriadedig y gwasanaeth a gwiriadau tystysgrif arferol. Nid yw CONNECT ar ei ben ei hun yn amgryptio'r ffrwd. Ar gyfer API HTTP go iawn, cleient HTTP yw'r rhyngwyneb mwy cyfleus o hyd oherwydd ei fod hefyd yn trin negeseuon HTTP.