Inherits from
TCustomControl
Constructor Create(AOwner : TComponent);
- *** Constructor/Destructor
Constructor CreateWithSocket(AOwner : TComponent; NewSocket : TSocket);
- Protected Constructor Can Only Be Called By TSock Class
This Constructor Assumes NewSocket Is A Valid Socket Handle
Function Accept(Var NewSock : TSock) : Boolean;
The Accept Method Will Create NewSock, But User Must Free
Function Close : Boolean;
Datagram Sockets Require A Bind
Function HostLookup(Value : String) : TInAddr;
Public Support Methods Accept Creates A New Instance Of A TSock Component And Returns It To The User Application.
Function Open : Boolean;
*** Support Methods
Function PortLookup(Value : String) : U_Short;
Isn't Cached, Have To Do A GetHostByName
Function Receive : String;
Do Not Loop For A Non-Blocking Socket
Function ReceiveCount(Count : Integer) : String;
Function ReceiveDatagram(Var HostName : String) : String;
Function ReceiveLine : String;
Used To Loop While We're Connected And Anything Is In The Input Queue
Function Send(Value : String) : Boolean;
Function SendDatagram(Value, HostName : String) : Boolean;
Function StartListen : Boolean;
StartListen And StopListen Are A Robust Form Of Setting Listen Otherwise, Perform A GetServByName Based On The Protocol
Function StopListen : Boolean;
Destructor Destroy;
Procedure Loaded;
Loaded Handles Starting Listening Mode After Streaming The Properties
Procedure WMPaint(Var Message : TWMPaint);
If AutoAccept Is Set To True And OnAutoAccept Is Set.
Procedure WMSize(Var Message : TWMSize);
Procedure WMSock(Var Message : TMessage);
Event Handlers*** Event Handling
Procedure DoInfo(SocketInfo : TSocketInfo; Msg : String);
Private Support Methods Convert FRecvAddrIn To A String IP Address
Function GetConnected : Boolean;
Function GetEOF : Boolean;
Function GetRemoteHost : String;
At Design-Time, stDatagram And Listen Are Mutually Exclusive
Function GetText : String;
Procedure SetAutoAccept(Value : Boolean);
Datagram Sockets Only Care About Read Messages
Procedure SetBitmap;
Procedure SetBlocking(Value : Boolean);
SetBlocking Will Set The Asynchronous Mode
Procedure SetConnected(Value : Boolean);
Procedure SetHostName(Value : String);
Property Set/Get Routines*** Property Set/Get Procedures
Procedure SetListen(Value : Boolean);
Just Call The Send Method And Ignore The Boolean Result
Procedure SetPortName(Value : String);
Procedure SetSocket(Value : TSocket);
Procedure SetSocketType(Value : TSocketType);
Otherwise, We Need To Check To See If It's Already Listening
Procedure SetText(Value : String);
Just Call The Receive Method
property AutoAccept : Boolean
property Blocking : Boolean
property BlockingTimeout : Integer
property HostName : String
property LineBreak : TLineBreak
property Listen : Boolean
property PortName : String
property SocketType : TSocketType
property Connected : Boolean
property EndOfFile : Boolean
Used To Read FConnected
property RemoteHost : String
RemoteHost Returns The Remote IP If SocketType=stStream And Will Return The Most Recent Incoming Datagram IP If SocketType=stDatagram
property Socket : TSocket
property Stream : TStream
property Text : String
event OnAccept : TNotifyEvent
event OnAutoAccept : TNotifyAutoEvent
event OnConnect : TNotifyEvent
event OnDisconnect : TNotifyEvent
event OnInfo : TNotifyInfoEvent
event OnRead : TNotifyReadEvent
event OnWrite : TNotifyEvent
FAutoAccept : Boolean;
Do Blocking Calls?
FBlocking : Boolean;
Socket Listens?
FBlockTime : Integer;
Are We Connected?
FBmp_Listen : TBitmap;
UDP Bitmap
FBmp_TCP : TBitmap;
Holder For Design-Time Image
FBmp_UDP : TBitmap;
TCP Bitmap
FCharBuf : Array[1..32768] Of Char;
Listening Bitmap Character Buffer (Most WINSOCK.
FConnected : Boolean;
Automatically Accept Incomings
FHostName : String;
Line Break Style For Line Input
FInBuffer : String;
Socket Handle
FLastChar : Char;
Address Information Block For RecvFrom
FLineBreak : TLineBreak;
Socket Type (Stream Or Datagram
FListen : Boolean;
Output Buffer For Non-Blocking
FOnAccept : TNotifyEvent;
FOnAutoAccept : TNotifyAutoEvent;
FOnConnect : TNotifyEvent;
Associated TSockStream Object
FOnDisconnect : TNotifyEvent;
FOnInfo : TNotifyInfoEvent;
FOnRead : TNotifyReadEvent;
FOnWrite : TNotifyEvent;
FOutBuffer : String;
Input Buffer
FPicture : TBitmap;
Last Character Read For Line-Input
FPortName : String;
Host Name Or IP Address
FRecvAddrIn : TSockAddrIn;
Address Information Block
FSockAddrIn : TSockAddrIn;
FSocket : TSocket;
Port Name Or Well-Known Number
FSocketType : TSocketType;
FStream : TStream;
How Long To Wait For Blocking Operation
Constructor Create(AOwner : TComponent);
*** Constructor/Destructor
Constructor CreateWithSocket(AOwner : TComponent; NewSocket : TSocket);
Protected Constructor Can Only Be Called By TSock Class
This Constructor Assumes NewSocket Is A Valid Socket Handle
Function Accept(Var NewSock : TSock) : Boolean;
The Accept Method Will Create NewSock, But User Must Free
Function Close : Boolean;
Datagram Sockets Require A Bind
Function HostLookup(Value : String) : TInAddr;
Public Support Methods
Accept Creates A New Instance Of A TSock Component And Returns It To The User Application. The User Is Responsible For Freeing The Component.
Function Open : Boolean;
*** Support Methods
Function PortLookup(Value : String) : U_Short;
Isn't Cached, Have To Do A GetHostByName
Function Receive : String;
Do Not Loop For A Non-Blocking Socket
Function ReceiveCount(Count : Integer) : String;
Function ReceiveDatagram(Var HostName : String) : String;
Function ReceiveLine : String;
Used To Loop While We're Connected And Anything Is In The Input Queue
Function Send(Value : String) : Boolean;
Function SendDatagram(Value, HostName : String) : Boolean;
Function StartListen : Boolean;
StartListen And StopListen Are A Robust Form Of Setting Listen
Otherwise, Perform A GetServByName Based On The Protocol
Function StopListen : Boolean;
Destructor Destroy;
Procedure Loaded;
Loaded Handles Starting Listening Mode After Streaming The Properties
Procedure WMPaint(Var Message : TWMPaint);
If AutoAccept Is Set To True And OnAutoAccept Is Set... Create A New Socket Based On The Accepted One And Begin AutoAccept As If It Were A Thread... The AutoAccept Routine Is Responsible For Destroying The New Socket Component.
Procedure WMSize(Var Message : TWMSize);
Procedure WMSock(Var Message : TMessage);
Event Handlers
*** Event Handling
Procedure DoInfo(SocketInfo : TSocketInfo; Msg : String);
Private Support Methods
Convert FRecvAddrIn To A String IP Address
Function GetConnected : Boolean;
Function GetEOF : Boolean;
Function GetRemoteHost : String;
At Design-Time, stDatagram And Listen Are Mutually Exclusive
Function GetText : String;
Procedure SetAutoAccept(Value : Boolean);
Datagram Sockets Only Care About Read Messages
Procedure SetBitmap;
Procedure SetBlocking(Value : Boolean);
SetBlocking Will Set The Asynchronous Mode
Procedure SetConnected(Value : Boolean);
Procedure SetHostName(Value : String);
Property Set/Get Routines
*** Property Set/Get Procedures
Procedure SetListen(Value : Boolean);
Just Call The Send Method And Ignore The Boolean Result
Procedure SetPortName(Value : String);
Procedure SetSocket(Value : TSocket);
Procedure SetSocketType(Value : TSocketType);
Otherwise, We Need To Check To See If It's Already Listening
Procedure SetText(Value : String);
Just Call The Receive Method
property AutoAccept : Boolean
property Blocking : Boolean
property BlockingTimeout : Integer
property HostName : String
property LineBreak : TLineBreak
property Listen : Boolean
property PortName : String
property SocketType : TSocketType
property Connected : Boolean
property EndOfFile : Boolean
Used To Read FConnected
property RemoteHost : String
RemoteHost Returns The Remote IP If SocketType=stStream And Will Return The Most Recent Incoming Datagram IP If SocketType=stDatagram
property Socket : TSocket
property Stream : TStream
property Text : String
event OnAccept : TNotifyEvent
event OnAutoAccept : TNotifyAutoEvent
event OnConnect : TNotifyEvent
event OnDisconnect : TNotifyEvent
event OnInfo : TNotifyInfoEvent
event OnRead : TNotifyReadEvent
event OnWrite : TNotifyEvent
FAutoAccept : Boolean;
Do Blocking Calls?
FBlocking : Boolean;
Socket Listens?
FBlockTime : Integer;
Are We Connected?
FBmp_Listen : TBitmap;
UDP Bitmap
FBmp_TCP : TBitmap;
Holder For Design-Time Image
FBmp_UDP : TBitmap;
TCP Bitmap
FCharBuf : Array[1..32768] Of Char;
Listening Bitmap Character Buffer (Most WINSOCK.DLLs Max At 32k
FConnected : Boolean;
Automatically Accept Incomings
FHostName : String;
Line Break Style For Line Input
FInBuffer : String;
Socket Handle
FLastChar : Char;
Address Information Block For RecvFrom
FLineBreak : TLineBreak;
Socket Type (Stream Or Datagram
FListen : Boolean;
Output Buffer For Non-Blocking
FOnAccept : TNotifyEvent;
FOnAutoAccept : TNotifyAutoEvent;
FOnConnect : TNotifyEvent;
Associated TSockStream Object
FOnDisconnect : TNotifyEvent;
FOnInfo : TNotifyInfoEvent;
FOnRead : TNotifyReadEvent;
FOnWrite : TNotifyEvent;
FOutBuffer : String;
Input Buffer
FPicture : TBitmap;
Last Character Read For Line-Input
FPortName : String;
Host Name Or IP Address
FRecvAddrIn : TSockAddrIn;
Address Information Block
FSockAddrIn : TSockAddrIn;
FSocket : TSocket;
Port Name Or Well-Known Number
FSocketType : TSocketType;
FStream : TStream;
How Long To Wait For Blocking Operation