www.mikrocontroller.net

Forum: PC-Programmierung ein Client aufbauen für http


Autor: christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Ich würde gerne eine Client Implementierung (in C )aufbauen
um  http-requests an einen Server zu senden.
Wie kann ich das realisieren wenn meine Verbindung
ins Internet über einen Proxy läuft.

Was ich bisher getestet habe funktioniert so nicht.
(wegen Proxy?)

normale Struktur aufbauen:

remote = (struct sockaddr_in *)malloc(sizeof(struct sockaddr_in *));
remote->sin_family = AF_INET;

//ip hole ich über gethostbyname funktioniert!
tmpres = inet_pton(AF_INET, ip, (void*)(&(remote->sin_addr.s_addr)));

//wie muss ich PORT setzen?- Proxy sendet über 8181
remote->sin_port = htons(PORT);
...
 if(connect(sock, (struct sockaddr *)remote, sizeof(struct sockaddr)) < 
0){
          perror("Could not connect");
          exit(1);
        }
...
Der connect Aufruf scheitert dann mit der Fehlermeldung:
"Could not connect: No route to host"

Als ip Adresse nehme ich dann als Kommandozeilenargument z.b.
"http://www.google.de"
Oder braucht der Client die URL des Proxies?

Habe noch keine Erfahrung mit Client/Server Struktur über
Proxy laufend.Vielleicht muss der Client grundsätzlich
anders aufgebaut werden?

Danke für jede Hilfe

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du brauchst nur die IP von dem Proxy. Dann baust du eine verbindung zum 
Proxy auf und sagt ihm per "GET HTTP ..." welche Zeite du brauchst und 
schon bekommst du sie.

Aber wenn du dich erst am Proxy anmelden musst, dann wird es wesentlich 
komplizierter. Dann ist es besser einen fertigen httpclient zu 
verwenden.

Autor: christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja,eine Proxy authentifizierung wäre notwendig.
Ich  dachte sowas geht einzubauen via Proxy-Authorization.
Bisher sende ich sowas:

 char *tpl = "GET /%s HTTP/1.0\r\nHost: %s\r\nUser-Agent: %s\r\n\r\n";

Wie könnte man das mit authentifizierung realisieren?

Muss ich den die Proxy-IP in meine Struktur einfügen?
Wie übergebe ich dann die gesuchte URL(z.b.google).

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du verbindest an den Proxy (deine Sockaddr enthält die Proxy-IP) und 
schickst dem ein GET mit URL und Host.

Der Proxy schickt eine Fehlermeldung zurück (AUTHORIZATION REQUIRED), 
und teilt dir in den Headers mit, in welchem Format er gerne das 
Passwort hätte.

Request nochmal schicken, diesmal mit Passwort in den Headers => Fertig.

Die Passwort-"Verschlüsselungs"-Funktion kann dabei von richtig Simpel 
(Base64 und Fertig) bis bösartig kompliziert (NTLM) sein, musst halt 
schauen was dein Proxy da akzeptiert.

Für die Details schau dir bitte die RFC's dazu an, das alles hier 
haarklein vorzukauen ist etwas mühsam.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.