tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
11
ZUGRIFFE
9863
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    lukelukeluke lukelukeluke ist offline Mitglied Gold
    Registriert seit
    Sep 2004
    Beiträge
    171
    Hallo Leute,
    normalerweise beginne ich so eine Socket-Verbindung, also verbinde mich gleich im Konstruktor der Klasse Socket:
    Socket socket = new Socket("domain.com",5963);
    Das hat bis jetzt immer funktioniert. Nun möchte ich diese Verbindung über einen Proxy-Server herstellen.
    Überall im Internet (z.B. hier: http://java.sun.com/j2se/1.5.0/docs/...t/proxies.html) kann man folgenden Code dafür finden:
    Code :
    1
    2
    3
    4
    5
    
    SocketAddress addr = new InetSocketAddress("proxydomain.com",80);
    Proxy proxy = new Proxy(Proxy.Type.SOCKS,addr);
    Socket socket = new Socket(proxy);
    InetSocketAddress dest = new InetSocketAddress("domain.com",5963);
    socket.connect(dest);
    Wieso geht dieser Code bei mir nicht? Es kommt immer ein Fehler, dass Proxy.Type.SOCKS nicht erkannt wird.
    Hat jeamnd schon erfolgreich eine Socket Verbindung über einen Proxy gemacht? Evtl. auch mit Username und Passwort Übermittlung?
    Danke für eure Hilfe!
     

  2. #2
    MeinerEiner_80 Tutorials.de Gastzugang
    Moin!
    Kurze Frage, hast du auch java 1.5? Proxy.Type.SOCKS gibt es nämlich erst seit da

    *grüssle*
    MeinerEiner
     

  3. #3
    lukelukeluke lukelukeluke ist offline Mitglied Gold
    Registriert seit
    Sep 2004
    Beiträge
    171
    Hallo MeinerEiner,
    Ich habe Java 1.4.x, sieht also schlecht aus... .
    Gibt es eine andere Möglichkeit eine Socket-Verbindung über einen Proxy zu machen?
    Gruss, Luke
     

  4. #4
    MeinerEiner_80 Tutorials.de Gastzugang
    Moin!
    Probiere mal folgendes:
    Code :
    1
    2
    3
    
    [FONT=Arial][SIZE=3]  System.getProperties().put( "proxySet", "true" );
     System.getProperties().put( "proxyHost", "yourProxyMachineName" );
     System.getProperties().put( "proxyPort", "yourProxyPort" );[/SIZE][/FONT]


    Das funktioniert bei mir, wenn ich eine HttpURLConnection über einen Proxy mache möchte. Ob das auch in der tieferen Socket Schicht funktioniert, bin ich überfragt.. teste es einfach mal aus!

    *grüssle*
    MeinerEiner
     

  5. #5
    lukelukeluke lukelukeluke ist offline Mitglied Gold
    Registriert seit
    Sep 2004
    Beiträge
    171
    Hallo MeinerEiner,
    Danke für deine erneute Antwort!
    Mit diesem Trick "funktioniert" es schon eher. Ich kann nun das Programm kompilieren wenn ich vor dem Socketaufbau diese Werte setze...
    Jedoch fragt er mich nicht nach Username und Passwort per Standard-Windows Fenster. Gibt es eine Möglichkeit diese mit JAVA zu setzen? Weil der Proxy braucht eine Benutzerauthentifizierung.
    Danke für deine Hilfe!
     

  6. #6
    MeinerEiner_80 Tutorials.de Gastzugang
    Moin!
    hmm.. ich glaub das war etwas derart..:
    Code :
    1
    2
    
    System.getProperties.put( "http.proxyUser", "yourUsername" )
    System.getProperties.put( "http.proxyPassword", "yourPassword" );

    *grüssle*
    MeinerEiner
     

  7. #7
    lukelukeluke lukelukeluke ist offline Mitglied Gold
    Registriert seit
    Sep 2004
    Beiträge
    171
    Hmm, das bringt irgendwie nicht mehr, wenn ich das unten angebe.
    Hier ist mein Code:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    System.setProperty( "proxySet", "true" );
    System.setProperty( "proxyHost", "70.42.124.12" );
    System.setProperty( "proxyPort", "80" );
    try {
        System.out.println("Socket start");
        socket = new Socket("server.com",4526);
        System.out.println("Socket up");
    (Die IP ist erfunden)

    Da ich den Proxy besitze kann ich in der Logdatei nachsehen. Wenn ich nun einen Webbrowser öffne und folgenden Link aufrufe: http://70.42.124.12, dann zeigt es mir zwar eine Fehlermeldung an. Jedoch steht dann in dem Logfile vom Proxy eine weitere Zeile, dass jemand "nicht authorisierter" versucht hat, den Proxy zu verwenden.
    Mit diesem oben angezeigten Java-Code (erstmal ohne "http.proxyUser" und "http.proxyPassword" zu setzen) wird nicht einmal eine Zeile zum Proxy Log hinzugefügt. Ich kann also mit Java denn proxy gar nicht errecihen, bzw. es kommt eine Timeout-Fehlermeldung und "Socket up" wird nie angezeigt...
     

  8. #8
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo!

    Wenn du einen SOCKS Proxy verwendest musst du auch das socksProxyHost und socksProxyPort (default: 1080) System Property setzen.

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  9. #9
    lukelukeluke lukelukeluke ist offline Mitglied Gold
    Registriert seit
    Sep 2004
    Beiträge
    171
    Also... ich habe glaube ich gar keinen SOCKS Proxy, sondern einen Squid www-proxy (müsste ein http Proxy sein?). Jedoch geht es auch nicht mit "http.proxyHost"...
    Gibt es eine Möglichkeit mit Java den Proxy zu testen?
     

  10. #10
    SaintOliver SaintOliver ist offline Grünschnabel
    Registriert seit
    Jan 2008
    Beiträge
    2
    Hi Leute, habe da mal eine Frage an die Expertenrunde...

    Ich verwende eine verschlüsselte SSLSocket Verbindung um zwischen einem Client und einem Server zu kommunizieren. Nun soll die Verbindung zusätzlich über einen Proxy laufen. Alle direkte Internetverbindungen sind geschlossen und der einzige Ausgang ist über den Proxy. Den Code den ich für die direkte Verbindung verwende sieht einigermaßen so aus:

    Code :
    1
    2
    3
    
    SSLSocketFactory sf = getMySSLContext().getSocketFactory();
                ss = (SSLSocket) sf.createSocket(dest, destport);
                ss.startHandshake();

    Gibt es da besondere Anforderungen, die der Proxy erfüllen muss, um die SSL Verbindung weiterleiten zu können? Was muss ich wie einstellen, damit der Proxy verwendet wird?

    Vielen Dank für Eure Hilfe...

    Gruß
    SaintOliver
     

  11. #11
    SaintOliver SaintOliver ist offline Grünschnabel
    Registriert seit
    Jan 2008
    Beiträge
    2
    Keiner eine Idee
     

  12. #12
    StehtimSchilf StehtimSchilf ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Beiträge
    117
    Nun hat's mich auch hier erwischt.

    Ich muss eine bestehende Klasse anpassen, damit diese über einen Proxy geht. Die Klasse benutzt jedoch java.net.Socket und nicht HttpURLConnection.

    Hier ein Test-Schnippel:


    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    // der zu kontaktierende Host
    String host = "soap.schnipschnap.de";
    int port = 80;
     
    // unser Proxy
    String proxyHost = "192.168.13.42";
    int proxyPort = 8080;
     
    // put properties
    System.setProperty("socksProxyPort", proxyHost);
    System.setProperty("socksProxyHost", String.valueOf(proxyPort));
     
    // set up proxy
    Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress(proxyHost, proxyPort));
     
    // set up socket
    socket = new Socket(proxy);
     
    // contact host
    socket.connect(new InetSocketAddress(host, port));

    nun bleibt die Appli bei socket.connect() hängen.
    Der Proxy (Es ist ein ISA Webproxy für HTTP) funktioniert, denn ich schreibe diesen Beitrag via obigen Proxy.

    Proxy.Type.HTTP
    habe ich auch schon versucht, doch dann erhalte ich:
    java.lang.IllegalArgumentException: Invalid Proxy

    es kann doch wirklich nicht so schwer sein?

    cheerioh
    SiS

    BTW: umprogrammieren auf HTTPUrlConnection() is nicht.............
     

Ähnliche Themen

  1. Java Netzwerkverbindung über Proxy
    Von Thomas Darimont im Forum Java
    Antworten: 15
    Letzter Beitrag: 01.12.10, 15:02
  2. Antworten: 7
    Letzter Beitrag: 18.08.08, 11:15
  3. VB - FTP Upload über einen Proxy
    Von Domian im Forum Visual Basic 6.0
    Antworten: 3
    Letzter Beitrag: 22.04.08, 09:14
  4. Proxy / socks
    Von pking im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 3
    Letzter Beitrag: 11.07.06, 03:02
  5. Proxy über einen Tunnel umgehen?
    Von Sway im Forum Netzwerke
    Antworten: 12
    Letzter Beitrag: 15.04.05, 09:50