TcpClient und TcpServer haben keine Verbindung

-H-T-P-

Mitglied
Nach einiger Zeit mach ich mal wieder mit meinen "Projekt" weiter. ;)

Folgendes Problem:
TcpClient und TcpServer haben keine Verbindung.

Genauer:
Ich habe 2 Programme geschrieben. Jedes davon hat einen Client und Server, damit sie Befehle austauschen können.
Die Programme habe ich 2 Ports für das Senden und Empfangen zugewiesen.
Das klappt wunderbar im Heimnetzwerk, aber wenn das 2.Programm in einem anderen Netzwerk ist, dann ist sense.

Könnte es sein das die Router-Firewall schuld ist? Denn die Windows Firewall, sowie alle AntiViren-Software mit Firewall ist ausgeschaltet!


Liegt es daran, oder an was anderes?
Habt ihr eine Idee wie man den Fehler umgehen kann?

Das Projekt ist sehr umfangreich und hat sehr viel Zeit in Anspruch genommen, wäre sehr schade wenn jetzt Schluss ist. :(
 
Hallo,

wenn zwischen deinen 2 Netzwerken ein Router ist,
dann müssen natürlich die Ports im Router/Firewall auch freigegeben sein.

MfG Turri
 
...dann müssen natürlich die Ports im Router/Firewall auch freigegeben sein.

Also doch die Firewall im Router :mad:
Ist aber blöd jeden zu sagen, der dein Programm benutzt, dass er diese und jene Ports in der Router-Firewall öffnen soll.
Und dann gibt es immer wieder solche Leute: "Ports........Hä?........Wasn des?"
Und nach der Erkärung:"Aber da darf ich doch nichts dran ändern, vielleicht geht das dann nicht mehr..." oder "Du willst doch nicht etwa in meinen Computer rumschnüffeln..." usw.
(Bisschen übertrieben ;) )

Man kann das zwar mit der Firewall im Router irgendwie automatisieren, aber das muss dann erstmal erlaubt/aktiviert sein.


Noch eine letzte Frage:
Wenn die Ports "natürlich" freigegeben werden müssen, wie schaffen das dann Trojaner & Co durch die Routerfirewall?
Ist doch das selbe Prinzip, oder?
Schonmal überlegt? ;)
 
Zuletzt bearbeitet:
Hallo,

Trojaner oder ähnliches schaffen es in der Regel durch die Dummheit der User, die sich durch irgendwelche Sachen die sie downloaden mit auf den Rechner ziehen.

Und wenn die Aktion von User ausgeht (outgoing) dann bringt es nichts incomming Ports zu blocken.

Und du müsstest incomming Ports am Router freigeben damit jemand von draussen auf dich Zugriff hat.

MfG Turri
 
Zum Teil ist deine Antwort einleuchtend, nur ein Trojaner kann man ja steuern, also muss der am anderen Ende der Leitung auch Befehle empfangen.

Ich hab mir mal folgendes überlegt:
ICQ, Live Messenger usw. sind doch eine Flash-Anwendung, richtig?
Und da läuft alles über den Messenger-Server.

Schlussfolgerung und vielleicht auch Lösung:
Also gehe ich recht in der Anahme, dass alle Programme die über einen Server laufen keine Ports benötigen. Also ist das so änlich wie ein Webbrowser?

Mir ist dann eingefallen, dass ich mal ein Programm hatte, das änlich wie ein Trojaner war. Dieses Programm ist über eine No-IP gelaufen und wiederrum diese No-IP ist dann über den Server gelaufen.
Diese "IP" heist dann z.B. test.no-ip.com.
Aber ich habe es nicht geschaft sie in mein Programm zu intigrieren.
Wie soll das gehen?
Oder kann man das Programm eigene Befehle auf einen eigenen Server über z.B. PHP die Befehle austauschen lassen? :confused:

Fragen über Fragen......
 
Hallo,

Alle Programme die auf das Internet zugreifen benötigen einen Port.
Ports
Nur du bist der, der die Verbindung aufbaut (outgoing) deswegen geht das alles.
Bei den externen "Messenger"Servern (ICQ etc. ) sind die entsprechenden Ports natürlich frei.

Auch dein TCPClient und Server haben einen eingestellten Port worüber die kommunizieren.
Code:
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    TcpClient1->RemotePort = "18540";
    TcpClient1->RemoteHost = "http://deine.no-ip-adresse.com";
}
Wenn du keinen eingestellt hast, wird vermutlich irgend ein Standard Port verwendet.

Würdest du einen Webserver bei dir zuhause hinstellen dann müsstest du den Port 80 bei dir im Router freigeben sonst kann niemand von aussen(incomming) drauf zugreifen.

No-IP ist nur ein dynamic DNS Dienst. No-IP
Also gibt es dann eine feste URL über die ein Server (der seine IP ändert, z.b. durch Zwangstrennung bei DSL) trotzdem immer erreichbar ist. Vermutlich war dein Server über eine solche URL erreichbar.

So könntest du es mit deinem Programm auch machen...
Einen Server stellen, und den/die Port(s) im Router freigeben.
Andere Leute können dann z.b. über deine No-IP oder dyndns.org URL DynDNS auf deinen Server zugreifen. Die müssten dann auch nicht wissen (Ports ... hää... wasn das?)...
Das müsstest nur du einrichten.

MfG Turri

PS: Eigentlich wäre erstmal die Frage interessant was du vor hast, muss ich mir das als ein Chat vorstellen? Mit einer Beschreibung deinerseits kann man dir vielleicht gezielter weiterhelfen.
 
Zuletzt bearbeitet:
Ein Chat könnte man daraus machen, das stimmt.
Aber es gibt schon eh genug Chat-Programme.

Man könnte sagen, das es ein Mini-Admin Programm und/oder Mini-Help-Tool für andere Leute ist.
z.B. CMD-Befehle, Dateimanager mit Hochladen, Runterladen, Ausführen, löschen usw., Screenshot erstellen und senden, eine Update-Funktion gibts auch noch und paar andere Sachen.

Das Gegenstück hat auch eine kleine grafische Oberfläche um zu sehen was passiert usw.

Insgesamt klein, fein und was noch wichtiger ist, voll funktionsfähig.
ALLERDINGS habe immer noch das Problem mit den Ports. :p

Achja, das mit den Ports (dein Code) habe ich schon (siehe erster Post).
Ich geb auch zu, mit der No-IP war ich ein bisschen zu voreilig.

Naja, ich werde es jetzt, wenn keine Lösung gefunden wird, meinen Plan B hervorziehen und der geht so: Die Programme senden ihe Befehle über ein intigrieten WebBrowser mit PHP auf einen Server und das andere Programm hohlt sie sich.
Ist zwar nicht so schön (auch langsam), aber Hauptsache es geht erstmal.
 
Hallo,

Ich verstehe deine Idee. ;)
Sehe ich das richtig das dann jeder deiner Kumpels dieses Admin Tool zur verfügung stellt?
Wenn nur du das bist, sehe ich kein Problem darin einen eigenen selbst Programmierten Server zu stellen.
Wenn du dich mit den Portfreigaben auskennst. Das musst ja NUR DU einrichten.
Nachteil den Server zu Hause zu haben ist, der Rechner muss immer laufen, dass der Server immer erreichbar ist.

Die Programme senden ihe Befehle über ein intigrieten WebBrowser mit PHP auf einen Server
Was für ein Server? Wo liegt der?
Der Server muss ja auch erreichbar sein.
Wäre das selbe Problem mit den Ports denk ich mal.

MfG Turri
 
Selbst programmierten Server? Versteh jetzt nicht genau was du meinst.
Meinst du PHP?

Aufjedenfall wäre es Schwachsinn einen eigenen Server zuhause laufen zu lassen, da geb ich dir recht.
ABER es gibt ja tausende Anbieter die kostenlosen Webspace anbieten. ;)
Und da ich mit den WebBrowser meine Befehle per PHP sende ist doch die Portfreigabe wurscht.

Ich hab schon bereits angefangen meine Programme umzuschreiben.
Mal schauen obs klappt.
 
Zuletzt bearbeitet:
Ein selbstprogrammierten Server eben.
C++:
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    TcpServer1->LocalPort = "32140";
}
Ensprechend programmiert lauscht der dann auf Port 32140 ob durch irgendeine eingehende Nachricht (von einem TcpClient) eine Funktion ausgelöst wird.
Das Programm muss halt nur laufen...
Welche Funktionen du dem dann reinprogrammierst ist ja dir überlassen.

Ich denke aber auch das in deinem Fall irgend ein Freehostingangebot das beste ist.
Allein wegen der Stromkosten und ständigen Erreichbarkeit des Servers.

MfG Turri
 
Zurück