Autor Beitrag
Softchaos67
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 103

XP Prof
Delphi 7
BeitragVerfasst: Do 08.09.05 10:29 
Hallo,
ich benutze in meiner APP eine IdTCPServer Komponente ab Port 25000 ff.
Wie kann ich ermitteln, ob der Anwender den Port/die Applikation durch seine lokale Firewall geblockt hat?
Ich möchte den Anwender in diesem Fall darauf hinweisen, das er bestimmte Statusmeldungen der
zentralen Administration nicht bekommen kann.
Googeln oder DF haben mir nichts brauchbares geliefert.
Gruss
Matthias

_________________
cum grano salis
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Do 08.09.05 10:34 
Hallo!

Irgendwie verstehe ich das nicht ganz. Die TCP-Server-Komponente lauscht nur auf einem Port, nicht auf mehreren. Und du selber bekommst nichts davon mit, daß bei einem Anwender die Applikation durch die Firewall blockiert wird. Das ist ja mitunter einer der Zwecke, für die man eine Firewall bzw. einen Paketfilter hat: Es gehen keine Daten raus. :wink:

Cu,
Udontknow
Softchaos67 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 103

XP Prof
Delphi 7
BeitragVerfasst: Do 08.09.05 10:54 
Wenn der USer die Applikation 2 mal startet(und das soll er dürfen) brauche ich für den daraus resultierenden
Server einen neuen Port, deshalb ff.
Ich weiss also ob der Port belegt ist.
Ich weiss aber nicht ob der benutzer auf dem Port daten empfangen kann. Er sendet ja nur auf Anforderung von aussen.
Wenn aber die Anforderung von Aussen niemals durchkommt, wird er auch niemals senden.
Jetzt besser verstanden?
Oder verstehe ich da was falsch?
Gruss
Matthias

_________________
cum grano salis
alias5000
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2145

WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
BeitragVerfasst: Do 08.09.05 11:33 
Problem ist eher die Konzipation der firewalls. Es ist wahrscheinlich Absicht, dass das Programm davon nix mitbekommt, weil würde es das, könnte man (als schädliche Software) alle Ports durchprobieren und wenn man einen freien Prot somit kriegt, den ausnutzen. Ne Möglichkeit wäre, dass das Programm auf dem anderen Rechner eine Bestätigung schickt, dass der Befehl angekommen ist. Anders wirds wahracheinlich auch net gehen, weil ja mehrere versch. Firewalls auf dem Markt sind.

_________________
Programmers never die, they just GOSUB without RETURN
WeBsPaCe
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2322
Erhaltene Danke: 1

FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
BeitragVerfasst: Do 08.09.05 11:38 
Joa. Du richtest einfach eine Art PING ein zwischen deiner Client-Anwendung und dem Server. Wenn du kein ECHO (oder PONG) bekommst, dann machst du's einfach wie die Großen und sagst:

Zitat:
Es liegt ein Verbindungsproblem vor. Stellen Sie eventuell eine korrekte Konfiguration Ihrer Firewall sicher und wenden Sie sich an den Administrator


:mrgreen:
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Do 08.09.05 11:41 
user profile iconSoftchaos67 hat folgendes geschrieben:
Wenn der USer die Applikation 2 mal startet(und das soll er dürfen) brauche ich für den daraus resultierenden
Server einen neuen Port, deshalb ff.
Ich weiss also ob der Port belegt ist.
Ich weiss aber nicht ob der benutzer auf dem Port daten empfangen kann. Er sendet ja nur auf Anforderung von aussen.
Wenn aber die Anforderung von Aussen niemals durchkommt, wird er auch niemals senden.
Jetzt besser verstanden?
Oder verstehe ich da was falsch?
Gruss
Matthias


Es kling nach einer "Fehl"-Konstruktion. Clientapplikationen (also genaus solche, die du mehrmals aufrufen kannst) haben normalerweise nämlich nicht die TCP-Server-, sondern Clientkomponenten. Vielleicht beschreibst du einmal grob, was du überhaupt realisieren willst.

Cu,
Udontknow
Softchaos67 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 103

XP Prof
Delphi 7
BeitragVerfasst: Do 08.09.05 12:20 
@WeBsPaCe guck, als Client nutzt mir das doch nichts, dass der Server geblockt ist. Ich kriege halt "Host nicht erreichbar" oder
sowas. Aber der der Host sein sollte weiss immer noch nichts davon ,ausser ich rufe ihn an.
Ich (die Applikation) will also beim Start schon wissen ob sie überhaupt Server sein darf.
@Udontknow Ich beschreibs dir mals so:
Ich will das alle Versionen des Programms von mir erreichbar sind.
Dazu schreibt die App ihre Verbindungsdaten in eine DB (IP,User,Port auf dem der Server läuft).
Das mit dem Port ist wichtig, da das Prog auf Citrix Servern in einer MultiUserUmgebung läuft. Pro Maschine kann
es also zwangsweise mehrer Process meiner Application geben, ich will aber jede sepparat erreichen können.
Soviel zur Server seite.
Auf der ClientSeite schau ich einfach in der DB nach wer wie wo angemeldet ist, und kann mich (da ich ip,user und Port kenne)
mit jeder laufenden Instanz der App verbinden um nachrichten oder sonstiges auszutauschen.
Ich weiss wirklich nicht wie ich das anders realisieren soll, ohne das mindestens ein Rechner permanent als Server erreichbar
ist und die Connections zu den Clients aufrecht hält.
Also kann ich den Fehler in meiner "Fehlkonstruktion" (noch) nicht sehen.
Das ganze läuft nur im Intranet aber eben über TCP, das Netz ist durch einen Proxy nach aussen geschützt, der Port steht also nur
Firmenintern zur Verfügung.

Gruss
Matthias

_________________
cum grano salis
WeBsPaCe
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2322
Erhaltene Danke: 1

FireFox 3, Internet Explorer 6 SP1
D1, D3Prof, D6Pers, D7Pers+Indy, VisualStudio Express
BeitragVerfasst: Do 08.09.05 15:29 
Dann wirst du da wohl keine Chance haben, soweit ich das sehe. ;) Musst du eben drauf hoffen, dass deine Anwender so klug sind und immer an die Firewall denken. ;)

slt, WeBBy
MiChri
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 28

Win XP, Win 2000, Win 98, Linux
D4 Prof
BeitragVerfasst: Do 08.09.05 15:46 
Moin
So wie ich das verstanden habe soll der Server beim starten des Horchens eine Meldung bekommen wie:
"Das geht net, du hast wahrscheinlich eine Firewall."
Dann pack doch einen Client dazu, der versucht sich über den Localhost auf den Server zu verbinden und gib dann bei einem Timeout die Fehlermeldung aus.

Gruß Christian
Softchaos67 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 103

XP Prof
Delphi 7
BeitragVerfasst: Do 08.09.05 16:09 
@MiChri tja, der localhost wird ja nicht geblockt, da kann er sich mit sich selber unterhalten.

Ja, ist schon klar, beim prüfen der Connectivität werde ich eben die Benutzer auffordern ihre Firewalleinstellungen zu prüfen
und mein Proggi nicht zu blocken.
Schade eben, das ich das nicht programmintern ermitteln kann.
Gruss
Matthias

PS: villeicht fällt jemandem nochwas ein?

Ich warte noch auf Antwort von Udontknow. Vielleicht ein Verbesserungsvorschlag?
Denkst du nach meinen Ausführungen immer noch an eine Fehlkonstruktion?

_________________
cum grano salis
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Mo 12.09.05 20:19 
Ich kenne mich mit Citrix nicht so gut aus, daher weiß ich nicht, ob da noch etwas die "normale" Lösung verhindert:
Ich würde auf irgendeinem allgemein erreichbaren Server eine Anwendung installieren, die die TCP-Serverkomponente beherbergt und dementsprechend immer für jeden Client verfügbar ist. Beim Start einer Anwendung wird sich mit diesem TCP-Server verbunden, und auch die Administrationsanwendung meldet sich als normaler TCP-Client an dem TCP-Server an. Über diese Serverkomponente wird dann die Komunikation zwischen einzelnen Clients geregelt.
Was spricht dagegen?

Cu,
Udontknow
Raffo
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 300



BeitragVerfasst: Mo 12.09.05 20:37 
Die Windows-Firewall benutz ich schon lange nicht mehr, hab nämlich gemerkt, das die ja nicht wirklich schützt, vielleicht kannste das aber auch ausnutzen. Z. B. das (DOS) FTP Programm in Windows kannste programmieren und automatisch Dateien auf Deinem Server speichern lassen. Nun kommt die Win-Firewall hoch, meldet zwar, das das FTP was schicken will, läßt es aber dennoch zu... Daher hab ich die Sygate Firewall installiert, die das jeweilige Proggy tatsächlich erstmal daran hindert zu senden...
Softchaos67 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 103

XP Prof
Delphi 7
BeitragVerfasst: Di 13.09.05 08:11 
@Udontknow Ja, so hab ich mir das auch gedacht.
Am Anfang wollte ich das so, aber ich wollte kein eigenständiges Serverprogramm installieren.
Citrix ist kein Problem, man muss eben bedenken das mehrer User unter der gleichen TCP-Adresse arbeiten.
Das ist manchmal problematisch.
Damit ich keine Serverapp brauche habe ich eben die Konstruktion umgebaut, was mir erlaubt ohne Serverapp zu arbeiten.
Es funktioniert bis auf das Firewallproblem einwandfrei. Mir ist die normale Konstruktion schon klar, nur was an meiner
ist wirklich "falsch" oder anders gefragt ist meine Vorgehensweise problematisch?
Ich werde bestimmt eine Serverapp schreiben, habe aber dafür momentan keine Zeit, es wird also noch eine Weile so bleiben
müssen.
Gruss
Matthias

_________________
cum grano salis
Softchaos67 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 103

XP Prof
Delphi 7
BeitragVerfasst: Di 13.09.05 12:22 
Zitat:

Andreas Kreul
"Dunkel die andere Seite ist..."
"Yoda! Halt´s Maul und iss deinen Toast!"


@Udontknow

Der Spruch hat bei meinen Kindern mittlerweile Kultstatus.. :lol:

Gruss
Matthias

_________________
cum grano salis