Avatar billede sorenriis Nybegynder
27. juni 2005 - 20:20 Der er 4 kommentarer og
2 løsninger

Client og Serverprogram

Jeg skal have lavet et server- og et klientprogram, som kan sende data til hinanden.

Det skal virke sådan at klienten skal kunne sende nogle data (nogle få tekststrenge og nogle integers) til serveren, som den så gemmer. Og når jeg så lukker klienten ned, så skal den sende et signal til serveren om at nu er klienten logget af.

Hvor tilegner jeg mig information om hvilken metode jeg skal benytte for at lave dette?
Har Delphi noget smart indbygget til formålet? Jeg har Delphi 2005....
Avatar billede kroning Nybegynder
27. juni 2005 - 20:27 #1
Jeg bruger Indy´s komponenter til den slags dvs. en TCP server og nogle TCP klienter.
Avatar billede thorin_deathrage Nybegynder
27. juni 2005 - 21:17 #2
en måte å få klienten til å sende et signal når den slås av er å bruke OnCloseQuery til hovedformen din. jeg er ikke kjent med Delphi 2005's komponenter, men Delphi 6 bruker TServerSocket og TClientSocket...

f.eks:

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  ClientSocket1.Socket.SendText('END CONNECTION');
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  if Socket.ReceiveText('END CONNECTION') then
    User[GetUserID(Socket.RemoteAddress)].Online:= False;
end;

håper dette kan være til hjelp...
(for optimal ytelse lønner det seg ikke å bruke hele setninger til slike ting... å sende EN byte er mye mer effektivt (bruk av OPcodes f.eks))
Avatar billede thorin_deathrage Nybegynder
27. juni 2005 - 21:19 #3
en måte å få klienten til å sende et signal når den slås av er å bruke OnCloseQuery til hovedformen din. jeg er ikke kjent med Delphi 2005's komponenter, men Delphi 6 bruker TServerSocket og TClientSocket...

f.eks:

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  ClientSocket1.Socket.SendText('END CONNECTION');
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  if Socket.ReceiveText('END CONNECTION') then
    User[GetUserID(Socket.RemoteAddress)].Online:= False;
end;

håper dette kan være til hjelp...
(for optimal ytelse lønner det seg ikke å bruke hele setninger til slike ting... å sende EN byte er mye mer effektivt (bruk av OPcodes f.eks))
Avatar billede sorenriis Nybegynder
27. juni 2005 - 22:16 #4
Dvs. at jeg kun skal bruge TServerSocket og TClientSocket? Og så kan jeg undlade at rode med TCP server/klient?
Avatar billede sorenriis Nybegynder
27. juni 2005 - 23:50 #5
Evt. et sted hvor jeg kan læse mere om brug af sockets i Delphi?
Den er ikke helt feset ind endnu kan jeg mærke..
Avatar billede sorenriis Nybegynder
24. juli 2005 - 22:19 #6
Lukker spørgsmålet...
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