Browse Source

* fixes bug #7543

git-svn-id: trunk@5377 -
Almindor 19 years ago
parent
commit
03ff520550
1 changed files with 18 additions and 3 deletions
  1. 18 3
      fcl/inc/ssockets.pp

+ 18 - 3
fcl/inc/ssockets.pp

@@ -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;