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
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.
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).
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.