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...
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.
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...
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!"
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...
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!"
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...
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.
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...
Punkt 1: :rtfm:
Punkt 2: endpoint.Address
"Hail to the King, Baby!"
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...
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!"
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...
Probier mal
IPEndPoint ip = (IPEndPoint) myTcpCLient.Client.RemoteEndPoint;
ip.Adress und ip.Port enthalten deine gewünschten Infos.
IPAddress[] address = Dns.GetHostByName(Dns.GetHostName()).AddressList;
address[0] beinhaltet die IP des lokalen Rechners.
"Hail to the King, Baby!"
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...
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...