Når brugeren kobler på, gemmer du info om ham, (hostmask, remoteaddress,remoteport, osv) i en record, når du så skal sende til en enkelt løber du alle forbundne klienter igennem og tjekker op på de data du gemt, der hvor de alle passer har du din specifikke klient.
Ok, dette er dog noget kode fra et af mine projekter.
Du har en record til at gemme info om hver bruger:
type TUsers = record Name : string; RemoteAddr : string; RemotePort : Integer; PingValue : string; PingNb : Integer; LoggedIn : Integer; end; PUsers = ^TUsers; //pointer til denne record type
En liste til at holde pointere til disse records:
var userList : TList;
UserList := TList.Create(); //I form create et sted...
jeg har også en procedure som bruges til at tilføje nye klienter:
Procedure AddUser(Name, RemoteAddr : String; RemotePort : Integer); var User : PUsers; begin New(User); //Pointer til ny record
//... tjek om han skal have lov at logge ind, eller noget //.. finde det navn han sender, evt tjekke om det allerede er i brug //.. tilføj bruger til listen
AddUser(BrugersNavnHer, RemoteAddr, RemotePort);
-----
når brugeren så senere skriver, kan du løbe listen igennem og tjekke efter hvor den brugers RemoteAddr og RemotePort matcher, og så pille navnet ud.
når du skal sende til brugeren og kun har hans navn, løber du listen igennem, finder RemoteAddr og RemotePort, herefter løber du alle connections igennem, for at finde der hvor RemoteAddr og RemotePort matcher en connection, når de gør det sender du.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.