git-svn-id: trunk@5377 -
This commit is contained in:
Almindor 2006-11-14 19:11:01 +00:00
parent f258b907fb
commit 03ff520550

View File

@ -62,6 +62,8 @@ type
TConnectEvent = Procedure (Sender : TObject; Data : TSocketStream) Of Object;
TConnectQuery = Procedure (Sender : TObject; ASocket : Longint; Var Allow : Boolean) of Object;
{ TSocketServer }
TSocketServer = Class(TObject)
Private
FOnIdle : TNotifyEvent;
@ -101,19 +103,27 @@ type
Property SockType : Longint Read FSockType;
end;
{ TInetServer }
TInetServer = Class(TSocketServer)
Protected
FAddr : TINetSockAddr;
Function SockToStream (ASocket : Longint) : TSocketStream;Override;
Function Accept : Longint;override;
FPort : Word;
FHost: string;
Public
Procedure Bind; Override;
Constructor Create(APort: Word);
Constructor Create(const aHost: string; const APort: Word);
Property Port : Word Read FPort;
Property Host : string Read FHost;
end;
{$ifdef Unix}
{ TUnixServer }
TUnixServer = Class(TSocketServer)
Private
FUnixAddr : TUnixSockAddr;
@ -393,9 +403,16 @@ end;
Constructor TInetServer.Create(APort: Word);
begin
Create('0.0.0.0', aPort);
end;
Constructor TInetServer.Create(const aHost: string; const APort: Word);
Var S : longint;
begin
FHost:=aHost;
FPort:=APort;
S:=Sockets.Socket(AF_INET,SOCK_STREAM,0);
If S=-1 Then
@ -403,14 +420,12 @@ begin
Inherited Create(S);
end;
Procedure TInetServer.Bind;
begin
Faddr.family := AF_INET;
Faddr.port := ShortHostToNet(FPort);
Faddr.addr := 0;
Faddr.addr := LongWord(StrToNetAddr(FHost));
if not Sockets.Bind(FSocket, FAddr, Sizeof(FAddr)) then
raise ESocketError.Create(seBindFailed, [IntToStr(FPort)]);
FBound:=True;