129 lines
3.1 KiB
Plaintext
129 lines
3.1 KiB
Plaintext
|
{
|
||
|
$Project$
|
||
|
$Workfile$
|
||
|
$Revision$
|
||
|
$DateUTC$
|
||
|
$Id$
|
||
|
|
||
|
This file is part of the Indy (Internet Direct) project, and is offered
|
||
|
under the dual-licensing agreement described on the Indy website.
|
||
|
(http://www.indyproject.org/)
|
||
|
|
||
|
Copyright:
|
||
|
(c) 1993-2005, Chad Z. Hower and the Indy Pit Crew. All rights reserved.
|
||
|
}
|
||
|
{
|
||
|
$Log$
|
||
|
}
|
||
|
{
|
||
|
Rev 1.8 2004.02.03 5:45:06 PM czhower
|
||
|
Name changes
|
||
|
|
||
|
Rev 1.7 1/21/2004 3:27:46 PM JPMugaas
|
||
|
InitComponent
|
||
|
|
||
|
Rev 1.6 1/3/2004 12:59:52 PM JPMugaas
|
||
|
These should now compile with Kudzu's change in IdCoreGlobal.
|
||
|
|
||
|
Rev 1.5 2003.11.29 10:18:52 AM czhower
|
||
|
Updated for core change to InputBuffer.
|
||
|
|
||
|
Rev 1.4 3/6/2003 5:08:48 PM SGrobety
|
||
|
Updated the read buffer methodes to fit the new core (InputBuffer ->
|
||
|
InputBufferAsString + call to CheckForDataOnSource)
|
||
|
|
||
|
Rev 1.3 2/24/2003 08:41:28 PM JPMugaas
|
||
|
Should compile with new code.
|
||
|
|
||
|
Rev 1.2 12/8/2002 07:26:34 PM JPMugaas
|
||
|
Added published host and port properties.
|
||
|
|
||
|
Rev 1.1 12/6/2002 05:29:32 PM JPMugaas
|
||
|
Now decend from TIdTCPClientCustom instead of TIdTCPClient.
|
||
|
|
||
|
Rev 1.0 11/14/2002 02:19:24 PM JPMugaas
|
||
|
}
|
||
|
|
||
|
unit IdEcho;
|
||
|
|
||
|
{*******************************************************}
|
||
|
{ }
|
||
|
{ Indy Echo Client TIdEcho }
|
||
|
{ }
|
||
|
{ Copyright (C) 2000 Winshoes Working Group }
|
||
|
{ Original author J. Peter Mugaas }
|
||
|
{ 2000-April-24 }
|
||
|
{ }
|
||
|
{*******************************************************}
|
||
|
|
||
|
interface
|
||
|
|
||
|
{$i IdCompilerDefines.inc}
|
||
|
|
||
|
uses
|
||
|
IdGlobal,
|
||
|
IdAssignedNumbers,
|
||
|
IdTCPClient;
|
||
|
|
||
|
type
|
||
|
TIdEcho = class(TIdTCPClient)
|
||
|
protected
|
||
|
FEchoTime: UInt32;
|
||
|
procedure InitComponent; override;
|
||
|
public
|
||
|
{This sends Text to the peer and returns the reply from the peer}
|
||
|
function Echo(const AText: String): String;
|
||
|
{Time taken to send and receive data}
|
||
|
property EchoTime: UInt32 read FEchoTime;
|
||
|
published
|
||
|
property Port default IdPORT_ECHO;
|
||
|
end;
|
||
|
|
||
|
implementation
|
||
|
|
||
|
uses
|
||
|
{$IFDEF USE_VCL_POSIX}
|
||
|
{$IFDEF DARWIN}
|
||
|
Macapi.CoreServices,
|
||
|
{$ENDIF}
|
||
|
{$ENDIF}
|
||
|
IdComponent,
|
||
|
IdTCPConnection,
|
||
|
IdIOHandler;
|
||
|
|
||
|
{ TIdEcho }
|
||
|
|
||
|
procedure TIdEcho.InitComponent;
|
||
|
begin
|
||
|
inherited InitComponent;
|
||
|
Port := IdPORT_ECHO;
|
||
|
end;
|
||
|
|
||
|
function TIdEcho.Echo(const AText: String): String;
|
||
|
var
|
||
|
LEncoding: IIdTextEncoding;
|
||
|
LBuffer: TIdBytes;
|
||
|
LLen: Integer;
|
||
|
StartTime: TIdTicks;
|
||
|
begin
|
||
|
LEncoding := IndyTextEncoding(
|
||
|
{$IFDEF STRING_IS_UNICODE}
|
||
|
encUTF16LE
|
||
|
{$ELSE}
|
||
|
encOSDefault
|
||
|
{$ENDIF}
|
||
|
);
|
||
|
{Send time monitoring}
|
||
|
LBuffer := ToBytes(AText, LEncoding);
|
||
|
LLen := Length(LBuffer);
|
||
|
{Send time monitoring}
|
||
|
StartTime := Ticks64;
|
||
|
IOHandler.Write(LBuffer);
|
||
|
IOHandler.ReadBytes(LBuffer, LLen, False);
|
||
|
{This is just in case the TickCount rolled back to zero}
|
||
|
FEchoTime := GetElapsedTicks(StartTime);
|
||
|
Result := BytesToString(LBuffer, LEncoding);
|
||
|
end;
|
||
|
|
||
|
end.
|