Laden...
GIJOE
myCSharp.de - Member
21
Themen
142
Beiträge
Letzte Aktivität
vor 17 Jahren
Dabei seit
16.12.2004
Alter
52
Beruf
Informatiker/Anwendungsentwicklung
Interessen
Programmieren
Erstellt vor 17 Jahren

Original von Cookiie
IPEndPoint müsste die notwendigen Informationen haben.

Ja da hast du recht, aber ich versuche ja eine Verbindung zu einem Clienten aufzubauen durch deren Firwall ich nicht duch komme. Das heißt die Anfrage steht solange bis TimOut und dann Abbruch, da kann ich dann keine Infos mehr ziehen und wenn dann ist es zu spät!

Mein Ziel ist es:

Client mit den vom unbekannten benötigten Daten über meine Datenbank zu Informieren das ein unbekannter von ihm Daten haben möchte. Diesem Client gebe ich gleichzeitig die Portnummer des unbekanten mit der der unbekannte die Anfrage stellt. So das der Client diesen unbekannten mit der ensprechenden Portnummer anpingen kann und somit ein Loch in die Firewall reißt. Das gleiche muß natürlich auch andersrum vollzogen werden um das die Firewalls beiderseiten denkt das diese beiden eh unter entsprechenden Prorts Daten austauschen. Jetzt setze ich den Listener vom Client auf abhören und stelle nochmalig mit dem unbekannten (gleiche Portnummer) eine Anfrage. Jetzt sollte normalerweise ein Datenaustausch zustande kommen!

Vileicht geht das ja auch alles nicht, ich weis es leider nicht. Aber ein Versuch ist es wert, wer nicht wagt der nicht gewinnt!

Gruß, Joachim

Erstellt vor 17 Jahren

Original von Cookiie

Auf Serverseite ist es also die Server-IP mit Port 4711 und auf Clientseite die Client-IP und , und jetzt kommt das was du wohl wissen willst, der Client-Port. Dieser Client-Port ist aber random und wird einzig und allein vom Betriebssystem festgelegt, es ist mit zumindest nicht bekannt das man diesen Port definieren kann.

Genau das ist das was ich gemeint habe!

Kann man vieleicht während der Anfrage des Clienten Programmtechnisch herausfinden mit welchen Port er gerade die Anfrage startet?

Übrigens cockii, danke für den Tipp mit dem Thread. Hatt mich ein ganzes Stück nach vorne gebracht!

Gruß, Joachim

Erstellt vor 17 Jahren

Hallo @schaedld!

Da hast du schon recht, aber das ist halt der Port unter dem ich den entfernten Rechner finde. Was ich meinte is, dem anfragendem Clienten einen statischen Port zuweisen. zb. client.MeinePortnummer = 12345;

@cockii

Ich möchte gerne Mit einem Server Client Programm realisieren zwei Clienten direkt miteinander zu verbinden.

Mein Problem:
Solange kein Router oder Firerwal dazwischen hängt ist das kein Problem, das realisiere ich über einen Datenbank Server. In dem ich immer weis wer was für ne IP hat. Ich habe es auch schon geschaft Zwei Clienten über meinen Server zusamenzuführen und so den Datenaustausch zu realisieren (sehr langsame verbindung).
Ich selber würde aber lieber, du hast ja den Beitrag auch schon gelesen löcher in die Firewall bohren um so den Clienten das Portweiterleiten zu ersparen!

Gruß, Joachim

Erstellt vor 17 Jahren

Hallo!

Ja den Beitrag hab ich auch schon gelesen, jetzt dachte ich wenn ich da ein wenig herumspiele bekom ich das auch hin. Aber dem soll wohl nicht so sein. Jetzt weis ich wenigstens wie ein Router funzt.

Gruß, Joachim

Erstellt vor 17 Jahren

Hallo Leute!

Ich weis, is vieleicht ne doofe Frage!

Aber vieleicht geht das ja und ich finde einfach nicht raus wie.

Frage:
Weis von euch jemand wie man einem TCPClient Object eine Statische-Port-Nummer zuweisen kann?

Denn jedes mal wenn ich eine Anfrage an einen Server stelle habe ich immer nur die Dynamische Port-Nummer die ich dann beim Server herausfinden kann, würde aber gern eine Statische haben.

Der TCPListener stellt sich ja auch mit einer statischen Port-Nummer an den Start!

Vieleicht jemand ne Idee?

Vielen Dank im voraus!

Gruß, Joachim

Erstellt vor 17 Jahren

Hallo @Cockii

Aber wie kann es dann sein das ICQ oder Skype eine direkt schaltung zweier User zusammen bringen obwohl Router und Firewall dazwischen hängt? Denn der direkte Daten-Transfer und damit mein ich nicht UDP findet ja über TCP statt, und um das zu bewerkstelligen müßen die ein Loch in die Firewall bzw. Router bohren und der Anfragende behällt ja weiterhin seinen Ursprungs-Port bei! Oder irre ich mich jetzt totall? Ich weis das die Voice Nachrichten über UDP aber nicht die Daten(Dateien) die man einem schicken kann die werden doch über das TCP Protocoll geschickt oder?

Gruß, Joachim

Erstellt vor 17 Jahren

Hallo Leute!

Mal ne Frage: Wenn ich jetzt ne Anfrage an einen Entfernten Rechner stelle, z.B mit der IP 84.122.134.24 Port 11111. Wie lange bleibt diese Anfrage also IP und Portnummer in der Router Tabelle enthalten auch wenn die Verbindung nicht zustande kommt?
Oder entfernt er diesen Eintrag sobald die Anfrage gescheittert ist? Also sprich ich sende eine Anfrage, kann verbindung nicht herstellen aus was für einen Grund auch immer mein Prog. sagt Verbindung gescheittert. Löscht der Router mit Abbruch der Anfrage gleichzeitig den Eintrag in seiner Routing Tabelle?

Vieleicht kann mir da ja jemand weiter helfen!

Vielen Dank im voraus.

Gruß, Joachim

Erstellt vor 17 Jahren

Nene, hast schon recht.
Bin frh wen mir jemand sagt das ich auf dem Holzweg bin, ganz im Gegenteil ich bin dankbar dafür!

Ich werde es jetzt mal mit deinem Vorschlag versuchen, hört sich gut an!

Bin mit Threats noch nicht so vertraut, hab mich aber schon damit auseinandergesetzt.

Gruß, Joachim

Erstellt vor 17 Jahren

Also wenn ich unterschiedliche Ports verwende dan geht es. Das heist ich müßte die jeweilige Methode in der ich den neuen z.B (

listener = new TcpListener(new IPAddress(Dns.GetHostEntry(Dns.GetHostName().ToString()).AddressList[0].Address), 11111) 

instanziere, in einem jeweils seperaten Thread laufen lassen und ereiche dadurch das mehrere Clienten gleichzeitig auf diesen Server zugreifen können?

Jetzt ist das Problem mit dem Router, der leitet halt nur bekannte Port Anfragen weiter. Wenn ich jetzt hergehe und beim Router einen Port Bereich z.B. von 11111-33333 an den Server weiterleite, und bei der jeweiligen neu Instanzierung des Listeners 0 als Port angebe weis ich ja nicht ob er sich in diesem Port Bereich bewegt. Also müste ich per Rendom einen zufalls Port von 11111-33333 generieren.

Könnte es so funktionieren?

Seit mir nicht böse, aber das ist absolutes neu Land für mich!

Gruß, Joachim

Erstellt vor 17 Jahren

Ich weis das es ander mehrfach instanzierung liegt, aber wie ereiche ich es das mehrere Cienten bei großen Daten Transf. gleichzeitig von diesem Server bearbeitet werden? Mit dem Remoting Tool von @Rainbird funktuniert das perfekt, aber das ist halt ein Remoting Server system und läst keine NetworkStream zu sondern haut die Daten auf einen Schwung ins Netz.

Gruß, Joachim

10 von 142 Beiträgen