Laden...

IP aus einer bestehenden Verbindung

Erstellt von Dexter vor 18 Jahren Letzter Beitrag vor 18 Jahren 4.827 Views
D
Dexter Themenstarter:in
481 Beiträge seit 2005
vor 18 Jahren
IP aus einer bestehenden Verbindung

Gibt es ne möglichkeit die ip des clienten herauszufinden, wenn der eine TCP-Connection mit dem Server hat, also die IP aus dem TcpClient herausfischen. Geht das, oder muss der Client seine IP ermitteln und dann dem Server "unterbreiten".

Dexter

//edit UPS bitte verschieben, falsches Forum 🙁

Programmierer sind Maschinen die Koffein in Quellcode umsetzen.

B
342 Beiträge seit 2006
vor 18 Jahren

Hi Dexter,
das geht, glaube ich, mit TcpClient.Client.RemoteEntryPoint.
Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

5.941 Beiträge seit 2005
vor 18 Jahren

Original von Big Al
Der grüne Punkt geht auf die Wiese, der gelbe Punkt geht in die Sonne,
der blaue Punkt geht ins Meer, wohin geht der rote Punkt?

Auf die Nerven! 😁

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

B
342 Beiträge seit 2006
vor 18 Jahren

Da hasste recht 😁

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

D
Dexter Themenstarter:in
481 Beiträge seit 2005
vor 18 Jahren

Kann es sein, dass es TcpClient.Client nur im Framework 2.0 gibt? Im SharpDevelope 1.1 gibts das nämlich nicht.

Dexter

Programmierer sind Maschinen die Koffein in Quellcode umsetzen.

B
342 Beiträge seit 2006
vor 18 Jahren

MMMhhhh, vielleicht, 1.1 kenn ich nich so gut,
da ich C# mit 1.1 angefangen habe und ca. 4 Monate später 2.0 rauskam.
Da hab ich gleich "gewechselt".
Viele Grüße,
Big Al

Da man Spatzen nicht mit Kanonen jagt, sollte man auch nicht mit Computern auf Spatzenhirne losgehen.

F
529 Beiträge seit 2003
vor 18 Jahren

Kann es sein, dass es TcpClient.Client nur im Framework 2.0 gibt? Im SharpDevelope 1.1 gibts das nämlich nicht.

Stimmt nicht ganz, diese Eigenschaft ist nämlich nur nicht öffentlich wie in V2. Aber es existiert intern eine gleichnamige Socket-Variable. Das heißt, du musst einfach eine Klasse von der TCPClient-Klasse erben lassen, und diese Eigenschaft veröffentlichen. So kannst du dann auch darauf zugreifen. Ich denke, es müsste auch irgendwie per Reflection hinzuzimmern sein, aber das ist keine angemessene Lösung.

Besuchen sie das VisualC++ - Forum

D
Dexter Themenstarter:in
481 Beiträge seit 2005
vor 18 Jahren

Soweit so gut nur hab ich nicht wirklich eine Ahnung, wie ich Client auf public stellen kann.

Dexter

Programmierer sind Maschinen die Koffein in Quellcode umsetzen.

F
529 Beiträge seit 2003
vor 18 Jahren

Eine Möglichkeit währe:


using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;

namespace TcpTest
{
    class MyTcpClient : TcpClient
    {
        public Socket GetSocket()
        {
            return base.Client;
        }
    }
}


Allerdings bin ich mir nicht sicher, ob das so funktioniert, da ich es nicht testen kann.
Anstatt einer neuen Funktion könnte man auch die Client-Property überschreiben(Falls ich lüge, sagt es mir nur)?

Bearbeitung:
Ich habe noch eben den Namespace geändert...

Besuchen sie das VisualC++ - Forum

I
1.739 Beiträge seit 2005
vor 18 Jahren

Na, so richtig versteh ich das Problem nicht.
Wenn sich ein Client erfolgreich mit einem Server verbindet, weiss der Server doch Bescheid(IP/(Name/)Port) wer sich mit ihm verbunden hat, sonst würde die Kommunikation nicht funktionieren. Am Client braucht man da bestimmt nicht herumbasteln.
Was ist also genau das Problem? Wo und wie sollen die Daten zum tragen kommen?
TCP-Connection bedeutet was?(WebSite/Webservice, FTP, Socket etc.)
Fakt ist das Server und Client die Daten bekannt sind(sein müssen).

Kannst du deine Frage konkretisieren?

D
Dexter Themenstarter:in
481 Beiträge seit 2005
vor 18 Jahren

Also ich bin zZ dran einen kleinen Chat zu programmieren, denn ich dann im Informatikunterricht (der für mich etwas langweilig ist, fangen gerade mit Klassen an 🙁 ) benutzen möchte. Da will ich zB auch leute bannen können und deshalb habe ich gefragt, ob ich aufm Server aus dem TcpClient die IP filtern kann, damit ich die IP "sperren" kann.

Dexter

//edit Benutzt wird das nur im LAN

Programmierer sind Maschinen die Koffein in Quellcode umsetzen.

I
1.739 Beiträge seit 2005
vor 18 Jahren

Das sollte kein Problem(Clientverweigerung). Du verwendest für den Server den TcpListener(eigentlich ne blöde frage, aber es könnte ja auch ein Server in c++ oder vb sein der Socketklasse anders behandelt)?

Kurzabriss, so wie ichs verstanden habe:
Szenario a:
Server bemerkt den Connectversuch, schaut in der Blacklist nach und beendet bei Treffer den Versuch(vielleicht noch ne Mitteilung wie "Danke, aber leider genügen sie nicht mehr den Ansprüchen des Chats").
Szenario b:
Admin aktualisiert Blacklist. Folge: alle bestehenden Verbindungen werden geprüft, bei Treffer: Trennung der zutreffenden Verbindungen + Nachricht: "Der Admin glaubt sie haben sich daneben benommen, bye. Bei Unklarheiten wenden sie sich an Admin@chat.de".

Kleines Codebeispiel kann ich auch geben. Wenns klar ist(Servertechnologie). Das Beispiel könnte aber auch daneben gehen, da ich nicht weiss welche Besonderheiten in deiner bisherigen Lösung noch drin stecken könnten.
Wenns relativ egal ist, um so besser, dann kann simpel und allgemein sein.
Ich frag nur nochmal nach weil faul bin, und keinen sinnlosen Code posten möchte.

D
Dexter Themenstarter:in
481 Beiträge seit 2005
vor 18 Jahren

Über jeglichen Code wäre ich sehr erfreut. Hab es zZ sogelöst, dass der User seine IP ermittelt und dann an den Server schickt, der prüft dann, ob die halt in der BlackList sich befindet, wenn ja, dann kommt er in den Chat, wenn nein, dann wird die Connection wieder zugemacht und ne MessageBox erscheint halt.

Dexter

//edit beides von mir selbst geschrieben 😉

Programmierer sind Maschinen die Koffein in Quellcode umsetzen.

I
1.739 Beiträge seit 2005
vor 18 Jahren

Funktioniert auch. Besser natürlich wenn der Server "adieu" sagt. Poste ich halt was.
coming soon(muss mal nachkramen)

Edit: meine Schnipselsuche hat nichts ergeben(wer weiss wo es rumliegt? ), implementiere gerade ein kleines Bsp. Oberfläche und Listener sind fertig. Es wird einfach sein und 1.1 VS-Solution(wird autom. konvertiert beim Laden in VS2005).
Ergebnis wird dann morgen(9.3) spätestens 10.3 vorliegen(je nach Zeit(0.5h/d)), aber halt simpel(namentlich: primitiv).

I
1.739 Beiträge seit 2005
vor 18 Jahren

So hier ist das kleine Programm.

Es ist etws schlampig implementiert. Zur Vorschau genügts, hoffe ich.