mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-11-04 19:19:41 +01:00
parent
f258b907fb
commit
03ff520550
@ -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;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user