PHP Forum - Coding Board
November 20, 2017, 01:06:08 *
Willkommen Gast. Bitte einloggen oder registrieren.

Einloggen mit Benutzername, Passwort und Sitzungslänge
News:
 
   Übersicht   Hilfe Suche Einloggen Registrieren  
Seiten: [1]
  Drucken  
Autor Thema: ServerSocket Client Read ConnectionID  (Gelesen 139 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
berlinermauer
Full Member
***
Beiträge: 129


Profil anzeigen E-Mail
« am: Juni 28, 2009, 09:40:13 »

Gespeichert


Zacherl
Entwickler Team
Moderator
Sr. Member
****
Beiträge: 454



Profil anzeigen E-Mail
« Antworten #1 am: Juni 28, 2009, 10:17:11 »

Gespeichert

berlinermauer
Full Member
***
Beiträge: 129


Profil anzeigen E-Mail
« Antworten #2 am: Juni 29, 2009, 04:39:36 »

ne mein Problem ist wenn ich die mit Connections aufrufen will, das i brauch ich.
Gespeichert


mssl
Newbie
*
Beiträge: 19


Profil anzeigen E-Mail
« Antworten #3 am: Juni 29, 2009, 04:59:33 »

kannst du dir nicht ne neue klasse schreiben die socket extended und dann halt der neuen klasse n zusätzliches attribut spendieren welches die id speichert... und die gibts halt im konstruktor mit...
aber von delphi hab ich eigentlich eh kein plan... also sorry wenn ich falsch liege
Gespeichert
Zacherl
Entwickler Team
Moderator
Sr. Member
****
Beiträge: 454



Profil anzeigen E-Mail
« Antworten #4 am: Juni 29, 2009, 06:44:38 »

Ne, Connections ist ein durchgehendes Array von 0..ConnectionCount .. Darin enthalten sind alle TCustomWinSockets. Ich mache es meistens so, dass ich dem Data Attribut jedes Sockets im OnConnect Ereigniss den Pointer auf einen neuen Record oder eine neue Klasse übergebe. In diesem Object speichere ich dann alles Wichtige, wie Name, Betriebssystem, etc, was man halt so alles zur Identifizierung braucht ..
Das I kannst du auch bestimmen, indem du das Index Attribut eines TCustomWinSockets abfragst.
Gespeichert

berlinermauer
Full Member
***
Beiträge: 129


Profil anzeigen E-Mail
« Antworten #5 am: Juni 29, 2009, 08:45:42 »

Bei mir gibts kein Index?!


Kannst du mal nen beispiel machen?
Du Meinst eine Klasse und dessen propertys sind dann arrays?!

Joar ich wollte es so machen dass ich ein Array in meiner Form habe und das darin steht.

Nur eben für diese Form muss ich auch wissen von wo das Paket kommt
Gespeichert


Zacherl
Entwickler Team
Moderator
Sr. Member
****
Beiträge: 454



Profil anzeigen E-Mail
« Antworten #6 am: Juni 29, 2009, 08:55:16 »

Code:
type
  TSocketData = class(TObject)
  public
    ServerName: String;
    Username: String;
    Computername: String;
  end;
 
..
 
OnConnect;
var
  NewData: TSocketData;
begin
  NewData := TSocketData.Create;
  Socket.Data := Pointer(NewData);
end;
 
OnDisconnect;
begin
  TSocketData(Socket.Data).Free;
end;

Immer, wenn Daten ankommen (OnRead), wird ja auch das Socket übergeben, zu dem die Daten gehören. Dann solltest du einen Handshake machen, um erstmal die Werte, wie Username, Computername, etc zu übertragen.
 
Code:
with Socket.Data as TSocketData do
begin
  Username := ..
  Computername := ..
end;

Edit: Jap Index gibts wirklich nicht, keine Ahnung, was ich da im Kopf hatte. Aber du könntest trotzdem das Handle speichern und dann die Connections Liste in einer Schleife durchgehen und das Handle suchen. Aber wie gesagt, das betroffene Socket wird immer als Parameter in den Events mitgeliefert.
« Letzte Änderung: Juni 29, 2009, 09:00:43 von Zacherl » Gespeichert

Seiten: [1]
  Drucken  
 
Gehe zu:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines | New Look by Nolt Prüfe XHTML 1.0 Prüfe CSS