TClientSocket, Internet-IP ?
-
ich möchte das mein vorheriger post in diesem thread nicht vergessenheit gerät, weis jemand bescheid?
-
...nur damit meine erste Antwort nicht in vergessenheit gerät, was passt dir an meinem Vorschlag nicht?
-junix
-
? ich meine diesen teil meines gemeinten posts, ich glaube darauf hast du noch nichts geschrieben:
---- kopiert ---
wie läuft das eigentlich mit den Socket->Connections[x],
bekommt jede verb. eine ewige index-nr (x) oder wird alles, wenn einer geht nach oben verschoben? oder bleibt x gleich solange er connected ist?
---- kopiert ---
-
Oh sorry, das hab ich gar nicht gesehen, weils zwischen die beiden OT-Beiträge eingeschoben war
Mein fehler.
Nein, x ist einfach ein Index eines Arrays oder Vecotrs. Wenn du die verbindung schliesst sollte (sofern ich das noch richtig im Kopf hab) eigentlich alles eins nachrutschen und der Connections-Zähler um eins dekrementiert werden.
Allerdings hast du irgendwo bei den Eigenschaften der Sockets noch eine RemoteAddress die du auslesen kannst. Dieses Attribut gibt dir die öffentliche IP zurück.
Sorry nochmals.
-junix
-
Original erstellt von Jansen:
**aber ich weiss von Kumpel das die IP des Routers(!) bei DS direkt angezeigt wirdDer lokale Client verbindet sich über den Router mit dem DS-Server, dieser sieht die öffentliche IP des Routers und gibt sie an den Client zurück, wo sie dann im Spiel angezeigt wird.**
so hab ich mir das ja auch gedacht, aber die Adresse wird bei einer direkten Verbindung ohne Server usw angezeigt und zwar bevor man sich mit dem anderen verbunden hat, das wundert mich ja grade
.......
achn TheClient wieso machst DU das nicht so
also jeder der sich in Chat einloggt bekommt seine IP(also RemoteHost vom Server aus abgefragt) zugeschickt
-
die Adresse wird bei einer direkten Verbindung ohne Server usw angezeigt und zwar bevor man sich mit dem anderen verbunden hat
Kann ich mangels Spiel schlecht ausprobieren, möglicherweise wird die von der letzten Verbindung gespeichert? Oder es wird doch schon vor der eigentlichen Verbindungsaufnahme ein Server abgefragt. Prinzipiell gibt es einfach keine Möglichkeit, "von innen" die öffentliche IP eines Routers ausfindig zu machen.
-
@junix, stimmt dann dieses beispiel?
array:
Socket->Connections[0]->RemoteAdress (80.1.1.1)
Socket->Connections[1]->RemoteAdress (80.1.1.2)
Socket->Connections[2]->RemoteAdress (80.1.1.3)array nach dem 80.1.1.1 disconnected:
Socket->Connections[0]->RemoteAdress (80.1.1.2)
Socket->Connections[1]->RemoteAdress (80.1.1.3)
Socket->Connections[2]->RemoteAdress (NULL)---------------------------------------------------
Noch was, wo finde ich diesen Connections-Zähler?
-
Ja, das dürfte hinkommen. Was den COnnectionscounter anbelangt, so findet man den, wenn man die Hilfe mal etwas unter die Lupe nimmt... (Eigenschaften der Eigenschaft Socket von TServerSocket mal etwas durchbrowsen.) Da findet man:
**Auszug aus der Borland Hilfe:**Verwenden Sie Connections in Kombination mit der Eigenschaft ActiveConnections, um über alle geöffneten Socket-Verbindungen zu iterieren, die vom empfangenden Socket akzeptiert werden.
-junix
-
ich hatte mich schon in der hilfe drum bemüht, aber nischt gefunden.
Form1->ServerSocket1->Socket->ActiveConnectionsDanke!
Schade das die Conections ID nicht gleich bleibt, dann könnte man einfacher damit arbeiten, um bestimmte User anzusprechen.
-
hi,
wenn du die ip vom client haben willst, könnte man die seite http://checkip.dyndns.org/ laden und daraus die ip rausholen. nur weis ich net, wie man mal eben so eine webseite anspricht und sich die daten da raus holen kann.
ich hab in etwa das gleiche problem
bzw meins is schlimmer: ich muss ohne inet-server auskommen und wollte es so machen, das mein prog beim start sich beim ftp-server von meinem webspace anmeldet und dort ne datei mit meiner ip ablegt, so dass mein freund an meine ip kommt (dyndns is mir irgendwie zu umständlich, oder bin ich nur zu blöd
).
falls jemand noch andere weg kennt, wie ich ohne speziellen inetserver eine verbindung herstellen kann, wär ich dankbar.