Avatar billede refpsych Nybegynder
19. november 2002 - 16:31 Der er 4 kommentarer

Tcp

program fserver;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  IdTCPServer,
  IdThreadMgrDefault,
  IdStatus, Sockets;

type
  TTCPclass = class
Public
  procedure onExecute(AThread: TIdPeerThread);
  procedure onConnect(AThread: TIdPeerThread);
  procedure onDisconnect(AThread: TIdPeerThread);
end;

var
  TCP : TIdTCPServer;
  ITMgr : TIdThreadMgrDefault;
  port : integer;
  resbuffer, sendbuffer, cmdline : string;
  TCPc : TTCPclass;

Procedure TTCPclass.onExecute(AThread: TIdPeerThread);
begin
  sendbuffer := 'Pong';
  writeLn(AThread.Connection.ReadLn(#0));
  AThread.Connection.writeLn(sendbuffer+#0);
  AThread.Connection.disconnect;
  readLn;
end;

Procedure TTCPclass.onConnect(AThread: TIdPeerThread);
begin
  writeLn('Client Connected...');
  readLn;
end;

Procedure TTCPclass.onDisconnect(AThread: TIdPeerThread);
begin
  writeLn('Client Disconnected...');
  readLn;
end;

procedure readline(line: String);
begin
  if (line = 'quit') then
  begin
      exit;
  end;
  TCP.OnExecute    := TCPc.onExecute;
  TCP.OnConnect    := TCPc.onConnect;
  TCP.OnDisconnect := TCPc.onDisconnect;
  readLn(cmdLine);
  readline(cmdLine);
end;

begin
  WriteLn('-------------------------------');
  WriteLn(' PleXzel Chat Server Build 0.1 ');
  WriteLn('-------------------------------');
  WriteLn('');

  Write('Server Port: ');
  Readln(port);

  TCPc := TTCPclass.Create();
  TCP := TIdTCPServer.Create(nil);
  TCP.DefaultPort := port;
  TCP.TerminateWaitTime := 5000;
  TCP.Active := true;
  TCP.OnExecute    := TCPc.onExecute;
  TCP.OnConnect    := TCPc.onConnect;
  TCP.OnDisconnect := TCPc.onDisconnect;

  WriteLn('');
  WriteLn('Server Running');
  readLn(cmdLine);
  readline('cmdline');
  TCPc.Free;
end.
Avatar billede refpsych Nybegynder
19. november 2002 - 16:34 #1
Problemet med min kode herover er at når jeg prøver at sende en tekststereng fra en Tcp-klient modtager serveren den ikke...
Jeg kunne forstille mig at det havde noget med  TCP.OnExecute := TCPc.onExecute; og nogle manglende parametre at gøre...Men jeg kan sq ikke finde ud af det...
Avatar billede hermandsen Juniormester
19. november 2002 - 16:53 #2
Er overhovedet ikke sikker, men:

Procedure TTCPclass.onExecute(AThread: TIdPeerThread);
begin
  sendbuffer := 'Pong';
  writeLn(AThread.Connection.ReadLn(#0));
  AThread.Connection.Connect; //Mangler der ikke noget Connect-noget?
  AThread.Connection.writeLn(sendbuffer+#0);
  AThread.Connection.disconnect;
  readLn;
end;
Avatar billede bobcats Nybegynder
21. november 2002 - 22:32 #3
En der kan sende IdTCPServer.dcu til mig plzz ??? Så jeg kan kigge på det...! Casper_laustsen@hotmail.com
Avatar billede siz23 Nybegynder
23. november 2002 - 00:46 #4
det ligner noget irc ting, og hvis det er det skal du ikke slutte med #0 men med #13+#10 (cr+lf). Dette er taget ud fra hukommelsen, så det kan godt værer du kan nøjes med #10. Og dette gælder kun hvis det har noget med irc at gøre....

hvis du er igang med at lave en irc client, så få fat i "RFC 1459" der står hvordan du skal connecte/join/svare osv.

håber du kunne bruge det.
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