Windoof-Network and VC++
thom
- programmiertechnik
Hallo,
ich soll ein kleines Programm schreiben welches mit Sockets arbeitet.
Das Windowsnetzwerk hat einen Server [192.168.001.005] und einen Proxy [192.168.001.006] der Proxy ist in bei den Clients in den Netwerkeinstellungen bzw. den Internetoptionen eingestellt.
Wenn ich mein Programm ausführe bekomme ich in die Logdatei die Meldung das entweder gethostbyname() fehlschlägt (wenn adresse aufgelöst werden soll) oder bei connect() wenn ich eine IP-Adresse verwende.
Also ping, nslookup schlägt fehl, aber das lokale Netzwerk wird korrekt aufgelöst aber wenn eigentlich eine Anfrage an den Server/Proxy gehen sollte tut es das nicht.(kurz es funktioniert nicht)
Also ich vermute mal das es eher an den Clients liegt aber da kann ich nicht ran und der verantwortliche Admin ist zur Zeit nicht erreichbar.
thom
Moin,
ich verstehe Dich leider nicht. Könntest Du bitte mal Dein Problem schildern?
Zum Beispiel so:
--roro
Zum Beispiel so:
thom
Sorry,
- die Ausführung von Programm bricht mit einer "ERROR: gethostbyname()" Fehlermeldung ab oder "ERROR: connect()"
hätte ich weiter oben schon sehen müssen:
Von Deinem Host aus sind keine NS-Abfragen möglich. Da blockt eine Firewall Anfragen, die per Port 53/UDP rausgehen.
Stelle mal sicher, dass es kein lokales Problem ist (personal Firewall), ansonsten schau mal, dass Du jemand von der Security-Eingreiftruppe rankriegen kannst.
--roro
Gibt es noch andere Möglichkeiten als eine Firewall?
Das verwendete OS ist Windoof xp SP1 und eine Firewall direkt ist nicht installiert. Nur eine Proxy Software(Ken).
thom
Moin Thom,
Gibt es noch andere Möglichkeiten als eine Firewall?
Lokale Paketfilter, eingestellt in der Konfiguration der Netzkarte...
Das verwendete OS ist Windoof xp SP1 und eine Firewall direkt ist nicht installiert. Nur eine Proxy Software(Ken).
Ein Proxy-Server "bedient" eigentlich nur Verbindungen über das HTTP-Protokoll. Praktisch ein Gateway nur für HTTP. Aber schalt den doch mal aus ;-)
--roro
Ein Proxy-Server "bedient" eigentlich nur Verbindungen über das HTTP-Protokoll. Praktisch ein Gateway nur für HTTP. Aber schalt den doch mal aus ;-)
naja, dann geht nix mehr da ja der die Internetverbindung hat?!
thom
Ein Proxy-Server "bedient" eigentlich nur Verbindungen über das HTTP-Protokoll. Praktisch ein Gateway nur für HTTP. Aber schalt den doch mal aus ;-)
naja, dann geht nix mehr da ja der die Internetverbindung hat?!
Ähhm, Du hast weiter oben geschrieben, dass nslookup nicht tut. Damit ist für mich klar, dass das Internet sowieso nicht geht, weder mit oder ohne Proxy-Server.
--roro
Ähhm, Du hast weiter oben geschrieben, dass nslookup nicht tut. Damit ist für mich klar, dass das Internet sowieso nicht geht, weder mit oder ohne Proxy-Server.
Nunja was heisst 'nicht tut', lokale Adressen werden super aufgelöst aber wenn du mal de.selfhtml.org als Beispiel versuchst tut das nicht das ist richtig. Ich frage mich nur wiso, der IE (6) tut einwandfrei was auch die Funktion des Internets mit einschliesst.
thom
Moin!
Nunja was heisst 'nicht tut', lokale Adressen werden super aufgelöst aber wenn du mal de.selfhtml.org als Beispiel versuchst tut das nicht das ist richtig. Ich frage mich nur wiso, der IE (6) tut einwandfrei was auch die Funktion des Internets mit einschliesst.
Der IE löst keine Adressen auf - nur die vom Proxy. Dem sagt er "Hol mal diese Seite von diesem Server". Und dann löst der Proxy die Adresse auf, holt die Seite und schickt sie dem IE.
Dein "Internet" funktioniert somit nur für HTTP und eventuell auch HTTPS (wenn der Proxy das auch beherrscht). Außerdem eventuell noch für weitere vom Proxy unterstützte Protokolle, aber keinesfalls grundsätzlich für alles. Unter anderem eben nicht für dein Socket-Protokoll.
- Sven Rautenberg
Dein "Internet" funktioniert somit nur für HTTP und eventuell auch HTTPS (wenn der Proxy das auch beherrscht). Außerdem eventuell noch für weitere vom Proxy unterstützte Protokolle, aber keinesfalls grundsätzlich für alles. Unter anderem eben nicht für dein Socket-Protokoll
Gibt es Alternativen?
Hallo
Dein "Internet" funktioniert somit nur für HTTP und eventuell auch HTTPS (wenn der Proxy das auch beherrscht). Außerdem eventuell noch für weitere vom Proxy unterstützte Protokolle, aber keinesfalls grundsätzlich für alles. Unter anderem eben nicht für dein Socket-Protokoll
Gibt es Alternativen?
Warum? Ken kann das prinzipiell gesehen schon.
Sorge dafür, dass Du einen richtigen Internetzugang bekommst.
Dein Problem hängt übrigens weder an Visual C++ noch an "Windows-Network".
Hättest Du Deine Software mit gcc entwickelt und unter Linux laufen, und würdest einen Proxy unter Linux nutzen, hättest Du das gleiche Problem.
Freundliche Grüße
Vinzenz
Hättest Du Deine Software mit gcc entwickelt und unter Linux laufen, und würdest einen Proxy unter Linux nutzen, hättest Du das gleiche Problem.
Und wie kann ich mein Problem lösen?
thom
Moin!
Hättest Du Deine Software mit gcc entwickelt und unter Linux laufen, und würdest einen Proxy unter Linux nutzen, hättest Du das gleiche Problem.
Und wie kann ich mein Problem lösen?
Zwei Ansätze:
1. Sorge dafür, dass deine Socket-Anwendung mit Proxys klarkommt. Beispielsweise, indem du HTTP benutzt, oder sowas wie SOCKS4/5.
2. Sorge dafür, dass dein Netzwerk auf den Proxy verzichtet, und direktes Internet kriegt.
Welche Lösung schnelleren Erfolg bringt bzw. der Problemstellung angemessener ist, mußt du selbst entscheiden.
- Sven Rautenberg
Hallo,
Dein "Internet" funktioniert somit nur für HTTP und eventuell auch HTTPS (wenn der Proxy das auch beherrscht). Außerdem eventuell noch für weitere vom Proxy unterstützte Protokolle, aber keinesfalls grundsätzlich für alles. Unter anderem eben nicht für dein Socket-Protokoll
Gibt es Alternativen?
Keine direkte Alternative, sondern die exakte Nutzung des Proxies selbst. Damit HTTPS mit Proxies funktioniert und der Browser trotzdem noch Zertifikate verifizieren kann, gibt es eine spezielle Proxy-Methode namens CONNECT, die es ermöglicht, eine direkte Verbindung zum Server aufzubauen. Sprich:
1. Client verbindet sich mit Proxy.
2. Client sendet CONNECT host:port HTTP/1.0 + Leerzeile
3. Server antwortet "200 Connection Established" + evtl. Header + Leerzeile
4. Über die Verbindung Client <-> Proxy kann Client jetzt so tun, als ob er direkt mit dem Server, der unter host:port zu erreichen ist, verbunden wäre, der Proxy leitet alle Daten 1:1 weiter.
Nachdem Proxies häufig für sowas "missbraucht" (je nach Sichtweise ist das legitim oder eben nicht) wurden erlauben viele Proxies das meistens nur noch für Port 443 (HTTPS) - allerdings kann man das in der Regel konfigurieren.
Auf Anhieb habe ich für VC++ folgendes gefunden: http://www.codeproject.com/internet/akashhttpproxy.asp Vielleicht hilft's Dir ja.
Damit könntest Du vermutlich Dein Problem lösen.
Viele Grüße,
Christian