Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[SOLVED]Server - Client Connection über das Internet
Kronos_m
myCSharp.de - Member

Avatar #avatar-3143.jpg


Dabei seit:
Beiträge: 10
Herkunft: Deutschland

Themenstarter:

[SOLVED]Server - Client Connection über das Internet

beantworten | zitieren | melden

Hallo,

ich versuche mich kurz zu halten. Bin kurz vor'm Verzweifeln :-O
Problem: Ich starte einen Server...


[...]
IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 8000);
TcpListener listener = new TcpListener(endPoint);
listener.Start(1);
TcpClient client = listener.AcceptTcpClient();
[...]
... als nächstes starte ich (auf dem selben PC) den Client...


TcpClient client = new TcpClient("XXX.XXX.XXX.XXX", 8000);
... dabei gebe ich die externe IP-Adresse des Routers an, über dem ich mit dem Internet verbunden bin.
Jetzt zum Fehler:
Zitat
{"Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte XXX.XXX.XXX.XXX:8000"}
Ist es möglich mit dem TcpClient eine Verbindung mit meinem Server über das Internet aufzubauen? Gleich schon mal vorab: Port-Forwarding ist aktiviert und funktioniert auch, laut der Internetseite: open-ports
Es funktioniert sogar so gut, dass mein Server, der auf eine Verbindung wartet, auf den Test der Internetseite reagiert und mir einen TcpClient zurück gibt. Die Frage die ich mir jetzt stelle ist, was muss ich machen, damit auch mein Client zum Server durchdringt.

Danke schon mal für die Hilfe!
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Kronos_m am .
Die Summe meiner Erfahrungen bestimmt wer ich bin! ;-) Und ein paar Gene...
private Nachricht | Beiträge des Benutzers
Ayke
myCSharp.de - Member

Avatar #avatar-2293.gif


Dabei seit:
Beiträge: 643
Herkunft: Hamburg

beantworten | zitieren | melden

Mit der IP Adresse des Router wirst du nicht zurück zu deinen PC geroutet...
Nur von außerhalb... Du kanst deine Lokale IP Adresse verwenden oder 127.0.0.1
private Nachricht | Beiträge des Benutzers
VizOne
myCSharp.de - Member

Avatar #avatar-1563.gif


Dabei seit:
Beiträge: 1.373

beantworten | zitieren | melden

Es sollte schon gehen, wenn er seine externe IP verwendet, also die, die z.B. bei http://www.wieistmeineip.de/ angezeigt wird.

Ich würde zunächst einmal das gute alte telnet bemühen, um zu schauen, ob die Verbindung von deinem Client aus funktioniert:

> telnet die-externe-ip-des-routers 8000

(ggf. musst du den telnet client erst installieren unter "Windows-Funktionen aktivieren oder deaktivieren).
private Nachricht | Beiträge des Benutzers
Kronos_m
myCSharp.de - Member

Avatar #avatar-3143.jpg


Dabei seit:
Beiträge: 10
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

Ja, du hast recht, es muss wohl am Client liegen. Habe Telnet gestartet:
Zitat
C:\Users\Benutzer>telnet XXX.XXX.XXX.XXX 8000
Verbindungsaufbau zu XXX.XXX.XXX.XXX...Es konnte keine Verbindung mit dem Host hergestellt werden, auf Port 8000: Verbindungsfehler

Ach und btw, ich benutze natürlich die externe IP des Routers (www.wieistmeineip.de).

So, jetzt weiß ich leider nur nicht was ich damit anfangen kann, jetzt wo ich weiß, das Telnet nicht funzt. Was ist die Schlussfolgerung aus dem Ganzen?
Die Summe meiner Erfahrungen bestimmt wer ich bin! ;-) Und ein paar Gene...
private Nachricht | Beiträge des Benutzers
VizOne
myCSharp.de - Member

Avatar #avatar-1563.gif


Dabei seit:
Beiträge: 1.373

beantworten | zitieren | melden

Und telnet localhost 8000 funktioniert?
private Nachricht | Beiträge des Benutzers
Kronos_m
myCSharp.de - Member

Avatar #avatar-3143.jpg


Dabei seit:
Beiträge: 10
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

Ja in der Tat, mein Sever antwortet sofort und gibt eine TcpClient Instanz zurück, wenn ich das ganze mit 127.0.0.1 teste.

Ich bin verwirrt... Wenn ich mit http://www.yougetsignal.com/tools/open-ports/ auf besagten port 8000 prüfe und die externe IP des Routers angebe, antwortet mein Server auch sofort. Was übersehe ich?
Die Summe meiner Erfahrungen bestimmt wer ich bin! ;-) Und ein paar Gene...
private Nachricht | Beiträge des Benutzers
VizOne
myCSharp.de - Member

Avatar #avatar-1563.gif


Dabei seit:
Beiträge: 1.373

beantworten | zitieren | melden

Ich kann es mir zwar hier nicht vorstellen, aber vielleicht so eine IPv4 vs IPv6 Geschichte? Schau mal mit netstat nach, mit welchen IPs sich die verschiedenen Clients genau Verbinden.

Und natürlich checke bitte noch mal genau die Firewall Einstellungen am Router und in Windows.
private Nachricht | Beiträge des Benutzers
Ruben
myCSharp.de - Member

Avatar #avatar-2971.jpg


Dabei seit:
Beiträge: 61
Herkunft: Hamburg

beantworten | zitieren | melden

Hallo Kronos_m,

da der Fehler nur Auftritt, wenn du vom selben PC aus auf dich selbst versuchst zu connecten (über die externe Router-IP) werde ich nur mal vermuten, dass aus irgendeinem Grund solche reflexiven Verbindungen nicht geroutet werden.

Leider weiß ich nicht genau warum, aber wenn du es von einem anderen Computer von außen probieren könntest, der über eine andere Leitung läuft (also nicht denselben Router), dann denke ich mal, dass es funktioniert. Lokal müsstest du dann immer über die Loopback-Adresse (localhost oder 127.0.0.1) testen.

Und von dem was VizOne sagt:
auch möglich, dass es ein IPv4/IPv6-Problem ist
In der Zeit vor fünf Minuten ist Jetzt die Zukunft. Jetzt ist die Gegenwart. Die Zeit, in der ich zu erzählen begonnen habe, ist die Vergangenheit von Jetzt und die Zukunft von der Gegenwart der Zeit, fünf Minuten bevor ich zu erzählen begann.
private Nachricht | Beiträge des Benutzers
Kronos_m
myCSharp.de - Member

Avatar #avatar-3143.jpg


Dabei seit:
Beiträge: 10
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

Ok ;( Also, erstmal Danke!
Zitat von "VizOne"
[...]checke bitte noch mal genau die Firewall Einstellungen am Router und in Windows.
Habe ich beides komplett ausgestellt, ohne Erfolg.
Zitat von "Ruben"
[...]von einem anderen Computer von außen probieren könntest, der über eine andere Leitung läuft [...]
Gut, dann werde ich das mal Versuchen, ist nur gerade etwas schwierig...
Wie das ganze mit IPv4 / IPv6 zusammenhängen soll, kann ich mir gerade noch nicht so richtig vorstellen. Ich habe außerdem mal
 Netstat -an 
bemüht. Dabei ist mir etwas merkwürdiges aufgefallen:

Proto|Lokale Adresse||||Remoteadresse||||||||Status
TCP|||0.0.0.0:8000||||||0.0.0.0:0||||||||||||ABHÖREN

TCP|||192.168.1.2:61423|XXX.XXX.XXX.XXX:8000|SYN_GESENDET


Wenn ich das richtig lese, dann steht die erste Zeile für den Server und die Zweite für Telnet, welches versucht eine Verbindung aufzubauen?!?! Aber warum hat er dann bei der lokalen Adresse auf einmal einen anderen Port? Könnte das das Problem sein?

Danke %)
Die Summe meiner Erfahrungen bestimmt wer ich bin! ;-) Und ein paar Gene...
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2.295

beantworten | zitieren | melden

Dann schau doch mal ob der Port im Router nicht dummerweise lokal auf einen ganz anderen (Beispielsweise den von dir geposteten) zeigt.
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
VizOne
myCSharp.de - Member

Avatar #avatar-1563.gif


Dabei seit:
Beiträge: 1.373

beantworten | zitieren | melden

Das mit dem lokalen Port ist ganz normal, der wird i.d.R. zufällig ausgewählt. Lokaler Port und Remoteport müssen nicht identisch sein. Wenn das anders wäre, wären Browser beispielsweise ziemlich langsam, weil immer nur eine Verbindung mit einem Webserver (Port 80) möglich wäre.

Lediglich der lokale Port des Listeners und der Remoteport des Clients müssen übereinstimmen (außer, der Router biegt die Ports um, natürlich)
private Nachricht | Beiträge des Benutzers
Kronos_m
myCSharp.de - Member

Avatar #avatar-3143.jpg


Dabei seit:
Beiträge: 10
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

?( Also jetzt bin ich entgültig verzweifelt ?(
Habe den Client jetzt (sicherheitshalber) auf IPv4 festgelegt.

TcpClient client = new TcpClient(AddressFamily.InterNetwork);
client.Connect(IPAddress.Parse(strIP), 65000);
Habe das ganze noch mal mit localhost getestet + meiner lokalen IP-Adresse. Zusätzlich das ganze über
netstat -an
gemonitored. Beide (Server / Client) benutzen IPv4 und stellen eine super Verbindung her.
Über die externe Adresse des Router geht es immer noch nicht!
@VizOne: du hattest natürlich Recht mit den Ports, war ein bisschen dumm von mir...
@Ruben: habe es nun auch mit einem anderen PC getestet, über einen anderen Router. Ohne Erfolg, die Fehlermeldung bleibt die Gleiche.

Hat irgendwer noch irgendeine Idee oder eine Vermutung, was hier nicht richtig läuft oder wo das Problem liegt?

Verzweifelte Grüße ?(
Die Summe meiner Erfahrungen bestimmt wer ich bin! ;-) Und ein paar Gene...
private Nachricht | Beiträge des Benutzers
Ruben
myCSharp.de - Member

Avatar #avatar-2971.jpg


Dabei seit:
Beiträge: 61
Herkunft: Hamburg

beantworten | zitieren | melden

Leider weiß ich auf noch immer nicht, warum es zu diesem Fehler kommt.
Aber die Meldung bekomme ich immer, wenn der Server nicht läuft oder der Port falsch ist:

SocketException: Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte.

Wie man dieses Problem jedoch lösen kann, weiß ich leider nicht genau.
Theoretisch müsste ich dazu sowohl die Firewall-Einstellungen in Windows und die Router-Konfiguration einsehen. Aber das verlange ich nicht ;)

Merkwürdig ist allerdings, dass es über diese Internetseite Open-Ports funktionierte, aber nicht über einen außenstehenden PC.
Zitat von Kronos_m
@Ruben: habe es nun auch mit einem anderen PC getestet, über einen anderen Router. Ohne Erfolg, die Fehlermeldung bleibt die Gleiche.
Hast du dazu TelNet benutzt? (obwohl das wahrscheinlich keinen so großen Unterschied macht, vermute ich)
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Ruben am .
In der Zeit vor fünf Minuten ist Jetzt die Zukunft. Jetzt ist die Gegenwart. Die Zeit, in der ich zu erzählen begonnen habe, ist die Vergangenheit von Jetzt und die Zukunft von der Gegenwart der Zeit, fünf Minuten bevor ich zu erzählen begann.
private Nachricht | Beiträge des Benutzers
Kronos_m
myCSharp.de - Member

Avatar #avatar-3143.jpg


Dabei seit:
Beiträge: 10
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

Mehr als die Firewall austellen, Portforwarding aktivieren (getestet), IN- & OUT-Bound traffic für jede IP und jedes Protokoll zulassen und somit alle Filter auszustellen, kann ich auch nicht machten ;-)
Ziemlich gefährlich ;-) aber jetzt weiß ich, dass es wohl nicht an Win 7 oder dem Router liegt, so denke ich zumdinest ?(

Ich weiß auch nicht mehr weiter. Die anderen PCs haben versucht mit der Client-Anwendug eine Verbindung aufzubauen.

Komisch ist auch, das netstat mir anzeigt, wenn telnet eine Anfrage über den Port stellt, aber der Server reagiert darauf einfach nicht...

For what it's worth, netstat:
Proto Lokale Adresse Remoteadresse Status

TCP 192.168.1.2:60165 203.94.XX.XXX:65000 SYN_GESENDET
TCP 192.185.1.2:65000 0.0.0.0:0 ABH™REN

Das sieht doch super aus, warum funktioniert das nicht?
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Kronos_m am .
Die Summe meiner Erfahrungen bestimmt wer ich bin! ;-) Und ein paar Gene...
private Nachricht | Beiträge des Benutzers
Ruben
myCSharp.de - Member

Avatar #avatar-2971.jpg


Dabei seit:
Beiträge: 61
Herkunft: Hamburg

beantworten | zitieren | melden

Zitat von Kronos_m
Ziemlich gefährlich ;-) aber jetzt weiß ich, dass es wohl nicht an Win 7 oder dem Router liegt, so denke ich zumdinest ?

Ah, okay, das wäre das Stichwort.
Ich habe bislang noch kein Win7 - jetzt würde ich natürlich vorschlagen, dass du den Server auf einen PC mit WinXP laufen lässt (Client ist ja egal) und das testest.
das ist mein einziger Einfall im Moment.

Win7 soll ja den Benutzer (so habe ich mal gehört) vor sich selbst schützen ;)
In der Zeit vor fünf Minuten ist Jetzt die Zukunft. Jetzt ist die Gegenwart. Die Zeit, in der ich zu erzählen begonnen habe, ist die Vergangenheit von Jetzt und die Zukunft von der Gegenwart der Zeit, fünf Minuten bevor ich zu erzählen begann.
private Nachricht | Beiträge des Benutzers
Zicore
myCSharp.de - Member



Dabei seit:
Beiträge: 403

beantworten | zitieren | melden

Wenn es wirklich an der UAC liegen sollte, kannst du versuchen deine Anwendung (Visual Studio) als Administrator zu starten...

Aber ich denke nicht, das das die Ursache für das Problem ist.
Ich benutze für meinen Server auch Windows7 und das läuft problemlos selbst mit UAC.

Die Fehlermeldung deutet eindeutig auf Forwarding fehler hin. Entweder Firewall oder port ist bereits blockiert oder oder oder... versuch mal einen anderen Port.

[Edit] Ich sehe du benutzt bereits einen anderen Port.. Entschuldige
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Zicore am .
private Nachricht | Beiträge des Benutzers
Kronos_m
myCSharp.de - Member

Avatar #avatar-3143.jpg


Dabei seit:
Beiträge: 10
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

Danke für die vielen Hilfestellungen =)

Sollte ich noch rausfinden können, woran es liegt, werde ich auf jeden Fall bescheid sagen.

@TheGear: Ja benutze mittlerweile 65000, hilft aber auch nicht ;-)

Bin über den DSL-G604T Router mit dem I-Net verbunden. Für meine Port-Regel und Filtereinstellung habe ich mal ein Bilder hochgeladen. Vielleicht fällt ja jemanden etwas auf

Danke Leute
Attachments
Die Summe meiner Erfahrungen bestimmt wer ich bin! ;-) Und ein paar Gene...
private Nachricht | Beiträge des Benutzers
Corpsegrinder
myCSharp.de - Member



Dabei seit:
Beiträge: 401

beantworten | zitieren | melden

Leite den Port doch mal strikt auf die IP deines Rechners im Netzwerk weiter. Hast du dir das ganze schonmal mit Wireshark angeschaut?
private Nachricht | Beiträge des Benutzers
Kronos_m
myCSharp.de - Member

Avatar #avatar-3143.jpg


Dabei seit:
Beiträge: 10
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

DANKE an alle, besonderer Dank gilt VizOne der mir persönlich beim Testen geholfen hat.
Also, ich habe zu drastischen Methoden gegriffen und meinen Rechner (per Router Option) der DMZ hinzugefügt und ihn somit direkt dem Internet ausgesetzt. Und siehe da, es funktioniert perfekt :) Die Verbindung wird einwandrei hergestellt! Ist ein bisschen drastisch, also sollte jeder, der das gleich Problem hat und diese Lösung wählt, sicher gehen, dass die Firewall auf seinem Rechner ordentlich arbeitet 8)
Zitat von "Ruben"
[...]aus irgendeinem Grund [...] [werden] reflexive Verbindungen nicht geroutet[...].
Du hast Recht, mein Router macht es wirklich nicht. VizOne hat erwähnt, dass es seiner jedoch macht, scheint wohl ein Routerding zu sein.

Ich bin einfach nur froh, dass es jetzt geht :D
Die Summe meiner Erfahrungen bestimmt wer ich bin! ;-) Und ein paar Gene...
private Nachricht | Beiträge des Benutzers