Start Optionen zu erzwingen, Java socket-verbindungen zu localhost?
Ich versuche einen Weg zu finden, um Kraft jeder Verbindungsversuch ein Glas macht auf eine externe IP durch meinen proxy-server, der auf localhost(Auch eine Java-Anwendung).
Sobald der proxy-server empfängt die Verbindung, öffnet eine Verbindung mit der externen IP und beginnen, die Weiterleitung der IO zu und von der client - /server.
Ich habe schon Googeln dieses für 2 Tage, und ich habe nicht hatte kein Glück, ich glaube ich verwende die falschen Begriffe in meine such-versuche.
Wenn Sie irgendwelche Ideen haben, bitte lassen Sie mich wissen, werde ich alles versuchen.
Vielen Dank im Voraus. - Sean.
- Das gleiche wird hier diskutiert: stackoverflow.com/questions/1432961/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ist, dass ein "echter" Proxy, der könnten Sie den proxy verwenden Verwendung von java-system-Eigenschaften.
Haben Sie zwei alternativen:
Gut, Sie haben tatsächlich drei
Aus der Befehlszeile, die Sie verwenden werden:
Mit, dass alle http-verbindungen ab, die Sie ausführen, gehen durch
localhost
im Hafen8080
Das zweite ist, fügen Sie diese in der main-Methode des Programms:
Die nicht die gleiche.
Schließlich laden von
myapp.properties
Sie müssen nur sicherstellen, dass
myapp.properties
erhältlich ist der classpathMehr Informationen über diese Funktionalität hier
Wenn Sie Fragen zur Allgemeinen (NICHT-HTTP - /FTP-spezifischen!) proxying der Socket-verbindungen, dann die einfache Antwort ist, dass es nicht unterstützt wird, die von Java.
Wenn Sie konfigurieren einen proxy für HTTP-und FTP-Verkehr, der Proxyfunktion passiert bei der Anwendung Protokoll-Ebene. Die Java-side proxy-Eigenschaften sagen, die URLConnection-Schicht, um eine Verbindung zu Ihrem bestimmten proxy anstatt der IP-Adresse aus dem URL Ihre Anwendung versucht, eine Verbindung herzustellen. Die Java-Socket-Ebene ist nicht bewusst, dass dies geschieht. Er sieht nur eine Anfragen um eine Verbindung zu dem proxy.
Diese Arbeit, weil Sie die HTTP-und FTP-Protokolle gezielt zu unterstützen proxying. Zum Beispiel, die erste 'Zeile' einen HTTP-GET-request-message gibt die vollständige URL der Seite, die der client anfordert. Wenn die GET-Anfrage geht an einen proxy, der proxy kann herausfinden, wo die ist, hat, um es zu senden.
Blick auf das problem von Proxys auf der Socket-Ebene, die erste Beobachtung ist, dass die standard-Java-Klassenbibliotheken bieten HIERFÜR keine Unterstützung. Die zweite Beobachtung ist, dass es tatsächlich unimplementable ... es sei denn, Sie implementieren diese als alternative transport-layer. Der Grund ist, dass IP-und TCP/IP einfach nicht unterstützen das Konzept der explizit die Verwendung von proxyfunktionen oder relaying messages /streams. Und selbst wenn Sie es implementieren, die einen transport, es passt nicht in die standard-Socket-Modell.
So, wenn Sie wirklich Fragen über die Proxyfunktion alle des Netzwerkverkehrs für eine Java-Anwendung, kann dies nur umgesetzt werden, die außerhalb der JVM; d.h. auf der Netzwerk-Transportebene des JVM ' s (physischen oder virtuellen) host-Betriebssystem.
java.net.Socket(Proxy proxy)
Konstruktor). Aber, ja, für das HTTP-Protokoll braucht man einige zusätzliche Schicht, die damit umgehen. Apachecommons-httpclient
Entwickler Versprechen zum hinzufügen dieser Unterstützung: 4.x-version der Bibliothek (siehe wiki.apache.org/HttpComponents/...).sun.net.www.protocol.ftp.FtpURLConnection#connect()
undsun.net.www.protocol.http.HttpURLConnection#plainConnect()
. Plus Unterstützung für die Authentifizierung.Wenn es HTTP-Verkehr oder FTP-Verkehr, die Sie könnten versuchen, die folgenden system-Eigenschaften:
http.proxyHost (default: )
http.proxyPort (default: 80 wenn http.proxyHost angegeben)
http.nonProxyHosts (default:
Sehen Sie diesen link für details:
http://java.sun.com/docs/books/tutorial/networking/urls/_setProxy.html