Laden...

IP-Problem

Erstellt von Atomroflman vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.473 Views
A
Atomroflman Themenstarter:in
266 Beiträge seit 2007
vor 16 Jahren
IP-Problem

Ich habe eine Art Chat-Client geschrieben der ohne Server funktionieren soll, quasi tippt man die Ip-Adresse ein und checkt automatisch ob der jenige an der anderen Seite den Client auch auf hat... Und nun bin ich auf das Problem gestoßen dass mir wenn ich jemanden anschreibe keiner zurück schreiben kann... Deshalb will ich meine eigene IP Adresse auslesen und wärend des connects mitsenden...
Nur leider weiss ich nicht wie ich das anstellen soll (Senden 👍 / IP-Herausfinden 🤔 )
Wenn der andere sich zurück connected denn klappt das alles reibungslos, ich will nur dass der andere sich sofort Rückanmeldet wenn ich ihn anschreibe...
Gibs da was ?( ?( ?(

Von all den Sachen, die mir verloren gegangen, hab ich am meisten an meinem Verstand gehangen... MfG...

S
8.746 Beiträge seit 2005
vor 16 Jahren

Mache das lieber nicht so. Da muss nur ein NAT-Router/Firewall dazwischensitzen (die wechselt interne gegen externe IP) und schon klappt das nicht mehr.

Der Empfänger kann aber über HttpListenerRequest.RemoteEndpoint die IP-Adresse des Anfragers rauskriegen, und zwar die externe.

A
Atomroflman Themenstarter:in
266 Beiträge seit 2007
vor 16 Jahren

Das mit der Trennung von Extern und Intern sollte kein Problem darstellen denn es ist nur für ein Intranet gedacht...
Wenn ich mal fragen darf wie hättest du es denn gemacht ?(

Von all den Sachen, die mir verloren gegangen, hab ich am meisten an meinem Verstand gehangen... MfG...

363 Beiträge seit 2007
vor 16 Jahren

HI, ich vermute mal dein Fehler liegt darin das du die Verbindung schließt nachdem du deine Nachricht gesendet hast.
Also solange du den Socket oder TcpClient nicht mir Close() beendest, kannst du in beide Richtungen kommunizieren, einen bestehenden Stream vorausgesetzt.

Gruß Cookiie

"Hail to the King, Baby!"

A
Atomroflman Themenstarter:in
266 Beiträge seit 2007
vor 16 Jahren

Aber wie sage ich dem den nicht angerufen hat wo er die Nachrichten hin senden soll ?(


            public void SendBytes(byte[] BytesToSend, IPAddress Address)
            {
                System.Net.Sockets.TcpClient client = new TcpClient();
                client.Connect(Address, 1500);
                client.Client.Send(BytesToSend);
            }

Das ist meine Sendemethode, die braucht eine IPAdresse um etws senden zu können...
Oder gibt auch so etwas wie NEKLASSE.ReplyToSender(Nachricht); ?( ?( ?(

Von all den Sachen, die mir verloren gegangen, hab ich am meisten an meinem Verstand gehangen... MfG...

363 Beiträge seit 2007
vor 16 Jahren

Beim Empfänger wartest du ja mit TcpClient cl = listener.AcceptTcpClient(); auf eingehende Verbindungen.
Mit cl.getStream() bekommst den Stream der die Daten enthält, du kannst daraus lesen, ABER du kannst auch wieder was reinschreiben. Der Sender empfängt das dann, mußte dir wie nen Rohr vorstellen, wo auf jeder Seite jemand reinbrüllen kann oder 2 Dosen und ein Faden^^.

"Hail to the King, Baby!"

A
Atomroflman Themenstarter:in
266 Beiträge seit 2007
vor 16 Jahren

Okai das probier ich doch gleich mal aus ;o)

Von all den Sachen, die mir verloren gegangen, hab ich am meisten an meinem Verstand gehangen... MfG...

S
8.746 Beiträge seit 2005
vor 16 Jahren

Wenn du mit TCP arbeitet, dann brauchst du dich um das IP-Problem nicht zu kümmern, denn es wird eine bidirektionale Verbindung eingerichtet. Die IP kannst du aber über TcpClient.RemoteEndpoint herausfinden.

A
Atomroflman Themenstarter:in
266 Beiträge seit 2007
vor 16 Jahren

Wie mach ich aus dem EndPoint jetzt eine IP-Adresse ?(

Ich erhalte folgende Fehlermeldung:
Cannot implicitly convert type 'System.Net.EndPoint' to 'System.Net.IPAddress'

Von all den Sachen, die mir verloren gegangen, hab ich am meisten an meinem Verstand gehangen... MfG...

363 Beiträge seit 2007
vor 16 Jahren

Punkt 1: :rtfm:
Punkt 2: endpoint.Address

"Hail to the King, Baby!"

A
Atomroflman Themenstarter:in
266 Beiträge seit 2007
vor 16 Jahren

Punkt 1: Das ding hat mir immer noch nicht geholfen
Punkt 2: Die Eigenschaft .Address gibts in EndPoint nicht

Von all den Sachen, die mir verloren gegangen, hab ich am meisten an meinem Verstand gehangen... MfG...

363 Beiträge seit 2007
vor 16 Jahren

Sorry,
IPEndPoint hat die EIgenschaft Address, Endpoint nicht.
weiß im moment auch nicht weiter.
aber entweder du schließt die verbindung nicht, oder beim ersten kontakt sendest du die ip mit.

"Hail to the King, Baby!"

A
Atomroflman Themenstarter:in
266 Beiträge seit 2007
vor 16 Jahren

Das war ja mein Gedanke, die IP mitzusenden aber ich komm weder an die eigene noch an die Sender IP...
Ich wäre aber auch anderen Identifizierungsmethoden nicht abgeneigt, z.B. ne Art von ICQ Nr oder so was...
Aber da müsste ich ne Datenbank abfragen wo die IPs den Nummern zugeordnet werden, d.h. ich kann das Problem der IP Suche nicht umgehen...

Wenn ich IPEndPoint nutzen will muss ich auch den EndPoit in einen IPEndpoint umwandeln aber hab kA wie das nun wieder gehen soll...

Von all den Sachen, die mir verloren gegangen, hab ich am meisten an meinem Verstand gehangen... MfG...

S
8.746 Beiträge seit 2005
vor 16 Jahren

Probier mal

IPEndPoint ip = (IPEndPoint) myTcpCLient.Client.RemoteEndPoint;

ip.Adress und ip.Port enthalten deine gewünschten Infos.

363 Beiträge seit 2007
vor 16 Jahren
IPAddress[] address = Dns.GetHostByName(Dns.GetHostName()).AddressList;

address[0] beinhaltet die IP des lokalen Rechners.

"Hail to the King, Baby!"

A
Atomroflman Themenstarter:in
266 Beiträge seit 2007
vor 16 Jahren

Okay so weit so gut nun sendet er auch aber aus meiner Richtung nur ein mal... Warum? Keine Ahnung ich gugge mal ob ich das auch noch gelöst bekomm...

Besten Dank erstmal... 😁 👍

Von all den Sachen, die mir verloren gegangen, hab ich am meisten an meinem Verstand gehangen... MfG...

A
Atomroflman Themenstarter:in
266 Beiträge seit 2007
vor 16 Jahren

ES LÄUFT!!!

Aber: kann ich irgendwie den Anmeldenamen von Windows auslesen?

Von all den Sachen, die mir verloren gegangen, hab ich am meisten an meinem Verstand gehangen... MfG...