| Class TSock (unit Sock) |
TCustomControl
| Constructors |
Constructor Create(AOwner : TComponent);
Constructor CreateWithSocket(AOwner : TComponent; NewSocket : TSocket);This Constructor Assumes NewSocket Is A Valid Socket Handle
| Functions |
Function Accept(Var NewSock : TSock) : Boolean;
Function Close : Boolean;
Function HostLookup(Value : String) : TInAddr;Accept Creates A New Instance Of A TSock Component And Returns It To The User Application.
Function Open : Boolean;
Function PortLookup(Value : String) : U_Short;
Function Receive : String;
Function ReceiveCount(Count : Integer) : String;
Function ReceiveDatagram(Var HostName : String) : String;
Function ReceiveLine : String;
Function Send(Value : String) : Boolean;
Function SendDatagram(Value, HostName : String) : Boolean;
Function StartListen : Boolean;Otherwise, Perform A GetServByName Based On The Protocol
Function StopListen : Boolean;
Destructor Destroy;
Procedure Loaded;
Procedure WMPaint(Var Message : TWMPaint);
Procedure WMSize(Var Message : TWMSize);
Procedure WMSock(Var Message : TMessage);*** Event Handling
Procedure DoInfo(SocketInfo : TSocketInfo; Msg : String);Convert FRecvAddrIn To A String IP Address
Function GetConnected : Boolean;
Function GetEOF : Boolean;
Function GetRemoteHost : String;
Function GetText : String;
Procedure SetAutoAccept(Value : Boolean);
Procedure SetBitmap;
Procedure SetBlocking(Value : Boolean);
Procedure SetConnected(Value : Boolean);
Procedure SetHostName(Value : String);*** Property Set/Get Procedures
Procedure SetListen(Value : Boolean);
Procedure SetPortName(Value : String);
Procedure SetSocket(Value : TSocket);
Procedure SetSocketType(Value : TSocketType);
Procedure SetText(Value : String);| Properties |
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
property RemoteHost : String
property Socket : TSocket
property Stream : TStream
property Text : String| Events |
event OnAccept : TNotifyEvent
event OnAutoAccept : TNotifyAutoEvent
event OnConnect : TNotifyEvent
event OnDisconnect : TNotifyEvent
event OnInfo : TNotifyInfoEvent
event OnRead : TNotifyReadEvent
event OnWrite : TNotifyEvent| Variables |
FAutoAccept : Boolean;
FBlocking : Boolean;
FBlockTime : Integer;
FBmp_Listen : TBitmap;
FBmp_TCP : TBitmap;
FBmp_UDP : TBitmap;
FCharBuf : Array[1..32768] Of Char;
FConnected : Boolean;
FHostName : String;
FInBuffer : String;
FLastChar : Char;
FLineBreak : TLineBreak;
FListen : Boolean;
FOnAccept : TNotifyEvent;
FOnAutoAccept : TNotifyAutoEvent;
FOnConnect : TNotifyEvent;
FOnDisconnect : TNotifyEvent;
FOnInfo : TNotifyInfoEvent;
FOnRead : TNotifyReadEvent;
FOnWrite : TNotifyEvent;
FOutBuffer : String;
FPicture : TBitmap;
FPortName : String;
FRecvAddrIn : TSockAddrIn;
FSockAddrIn : TSockAddrIn;
FSocket : TSocket;
FSocketType : TSocketType;
FStream : TStream;| Constructors |
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
| Functions |
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
| Properties |
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 : BooleanUsed To Read FConnected
property RemoteHost : StringRemoteHost 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| Events |
event OnAccept : TNotifyEvent
event OnAutoAccept : TNotifyAutoEvent
event OnConnect : TNotifyEvent
event OnDisconnect : TNotifyEvent
event OnInfo : TNotifyInfoEvent
event OnRead : TNotifyReadEvent
event OnWrite : TNotifyEvent| Variables |
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