mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-11-04 09:02:22 +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