Avatar billede _benne_ Nybegynder
26. december 2001 - 00:09 Der er 4 kommentarer og
1 løsning

Send via ServerSocket

jeg har en serversocket som grabber klienters id via Socket.SocketHandle, så jeg kan sende specifikke beskeder til enkelte brugere via deres id..

Men hvis jeg f.eks. har en bruger med id\'en 52, hvordan sender jeg så en tekststreng til ham, og KUN brugeren med ID 52?
Avatar billede dkn Nybegynder
26. december 2001 - 00:42 #1
ServerSocket1.Socket.Connections[52].SendText(\'Davs\');
skule jo virke, men jeg mener at den alligevel sender til alle der er connected.

Men istedet kunne du jo sende den socket id som beskeden er tilegenet til - med i din meddelse. Og så extracte den på clients side, og se om det vil til ham.

På server siden siger du altså:

procedure TForm1.Button1Click(Sender: TObject);
Var
I:integer;
begin
for I := 0 to ServerSocket1.Socket.ActiveConnections-1 do
begin
ServerSocket1.Socket.SendText(\'52\'+\'^|^\'+\'Min besked\');
end;
end;



På client read:

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
Var
ResText, MyID, MessageText:string;
begin
ResText := Socket.ReceiveText;
MyID := copy(ResText, 0,pos(\'^|^\', ResText)-1);
MessageText := copy(ResText, pos(\'^|^\', ResText)+3, length(ResText));

if MyID = inttostr(ClientSocket1.Socket.SocketHandle) then
begin
showmessage(MessageText);
end else
showmessage(\'Beskeden var ikke til mig\');
end;


Ok jeg håber det virker, det er noget helt nyt jeg lige kom på :)
dkn
Avatar billede _benne_ Nybegynder
26. december 2001 - 00:46 #2
Jeg tror jeg finder en anden måde, da vi snakker pænt mange connections - op mod 1000...
Avatar billede _benne_ Nybegynder
26. december 2001 - 01:01 #3
Jeg laver sådan, at den tilføjer ens connection-id/nick til enden af en listbox når man connecter, og sletter den igen når man hopper af.

Derved kan jeg via at søge efter nick bruge item-nummeret (takker) til at bestemme connections[].sendText...

Points alligevel...
Avatar billede dkn Nybegynder
26. december 2001 - 01:03 #4
Tak hvis du mangler mere hjælp vil jeg da gerne hjælpe :)
Avatar billede _benne_ Nybegynder
26. december 2001 - 01:08 #5
Takker mange gange :)
Sidder og roder med http://www.eksperten.dk/spm/150408

Men er så træt i hovedet i aften, at jeg ikke kan se logikken i noget som helst :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester