> About redirect connection, in my small project this worked well ! It would be interesting to publish your small project on the usermade page at ICS website. -- [EMAIL PROTECTED] Author of ICS (Internet Component Suite, freeware) Author of MidWare (Multi-tier framework, freeware) http://www.overbyte.be
----- Original Message ----- From: "Arnoldo - Optextil" <[EMAIL PROTECTED]> To: "ICS support mailing" <twsocket@elists.org> Sent: Wednesday, May 25, 2005 3:10 PM Subject: Re: [twsocket] Telnet > Hi, > > About redirect connection, in my small project this worked well ! > > Thanks François and another members of ICS list. > > Arnoldo > > ----- Original Message ----- > From: "Francois PIETTE" <[EMAIL PROTECTED]> > To: "ICS support mailing" <twsocket@elists.org> > Sent: Tuesday, May 24, 2005 1:51 PM > Subject: Re: [twsocket] Telnet > > > >I have found this article explainign how to inherit from a socket handle: > > > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/shared_sockets_2.asp > > > > -- > > [EMAIL PROTECTED] > > http://www.overbyte.be > > > > ----- Original Message ----- > > From: "Francois Piette" <[EMAIL PROTECTED]> > > To: "ICS support mailing" <twsocket@elists.org> > > Sent: Tuesday, May 24, 2005 4:33 PM > > Subject: Re: [twsocket] Telnet > > > > > >> > ShellExecute(Application.Handle, 'open', @ClientFileName, > > @ClientParams, > >> > @ClientDir, SW_SHOW); > >> > >> I'm not sure you can use ShellExecute to inherit handles. Use > > CreateProcess which has a parameter > >> bInheritHandles. > >> > >> > to server with "telnet 127.0.0.1 5000"... The client project is > > executed, > >> > but show message "10038". > >> > >> Error 10038 means you pass a handle to winsock that is not a socket > > handle. In your case, the handle > >> is not inherited from the parent process. > >> > >> -- > >> [EMAIL PROTECTED] > >> http://www.overbyte.be > >> > >> > >> ----- Original Message ----- > >> From: "Arnoldo - Optextil" <[EMAIL PROTECTED]> > >> To: "ICS support mailing" <twsocket@elists.org> > >> Sent: Tuesday, May 24, 2005 3:23 PM > >> Subject: Re: [twsocket] Telnet > >> > >> > >> > Hi, > >> > > >> > About redirect the connection, I created two small projects, exemplify > > the > >> > problem ! > >> > > >> > Server: > >> > > >> > unit UServer; > >> > > >> > interface > >> > > >> > uses > >> > Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, > > Forms, > >> > Dialogs, WSocket, SHELLAPI; > >> > > >> > type > >> > TForm1 = class(TForm) > >> > SrvSocket: TWSocket; > >> > procedure FormCreate(Sender: TObject); > >> > procedure SrvSocketSessionAvailable(Sender: TObject; ErrCode: > >> > Word); > >> > private > >> > { Private declarations } > >> > public > >> > { Public declarations } > >> > end; > >> > > >> > var > >> > Form1: TForm1; > >> > > >> > implementation > >> > > >> > {$R *.dfm} > >> > > >> > procedure TForm1.FormCreate(Sender: TObject); > >> > begin > >> > SrvSocket.Close; > >> > SrvSocket.Addr := '0.0.0.0'; { Use any interface for listening } > >> > SrvSocket.Proto := 'tcp'; > >> > SrvSocket.Port := '5000'; > >> > SrvSocket.Listen; > >> > end; > >> > > >> > procedure TForm1.SrvSocketSessionAvailable(Sender: TObject; ErrCode: > > Word); > >> > var > >> > ClientFileName, ClientParams, ClientDir : array [0..255] of char; > >> > NewHSocket : TSocket; > >> > begin > >> > NewHSocket := SrvSocket.Accept; > >> > StrPCopy(@ClientFileName, 'c:\rf\projectcliente.exe'); > >> > StrPCopy(@ClientParams, ''+ inttostr(newhsocket)); > >> > StrPCopy(@ClientDir, 'c:\rf\'); > >> > ShellExecute(Application.Handle, 'open', @ClientFileName, > > @ClientParams, > >> > @ClientDir, SW_SHOW); > >> > end; > >> > > >> > Client: > >> > > >> > unit UCliente; > >> > > >> > interface > >> > > >> > uses > >> > Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, > > Forms, > >> > Dialogs, WSocket, Spin, StdCtrls, Buttons, WinSock; > >> > > >> > type > >> > TForm2 = class(TForm) > >> > Socket: TWSocket; > >> > Memo: TMemo; > >> > procedure SocketDataAvailable(Sender: TObject; ErrCode: Word); > >> > procedure FormCreate(Sender: TObject); > >> > private > >> > { Private declarations } > >> > public > >> > { Public declarations } > >> > end; > >> > > >> > var > >> > Form2: TForm2; > >> > > >> > implementation > >> > > >> > {$R *.dfm} > >> > > >> > procedure TForm2.SocketDataAvailable(Sender: TObject; ErrCode: Word); > >> > var > >> > Buffer : array [0..1023] of char; > >> > Len : Integer; > >> > begin > >> > Len := Socket.Receive(@Buffer, SizeOf(Buffer) - 1); > >> > if Len <= 0 then > >> > Exit; > >> > > >> > Buffer[Len] := #0; > >> > Memo.lines.add(StrPas(Buffer)); > >> > end; > >> > > >> > procedure TForm2.FormCreate(Sender: TObject); > >> > var > >> > NewHSocket : TSocket; > >> > begin > >> > if paramcount = 1 then > >> > Begin > >> > caption := ParamStr(1); > >> > NewHSocket := StrToIntDef(ParamStr(1),0); > >> > Socket.Dup(NewHSocket); > >> > End; > >> > end; > >> > > >> > Running this example, the server is listen on port 5000, on prompt I > > connect > >> > to server with "telnet 127.0.0.1 5000"... The client project is > > executed, > >> > but > >> > show message "10038". > >> > > >> > When you say: "Once you have the > >> > socket handle for the accepted connection, you may start another > > process, > >> > make it inherit the handle and let him process the connection. The > > second > >> > process may use TWSocket and receive the inherited handle using Dup(). > >> > " > >> > > >> > The implementation above is correct ? If not, have a sample ? > >> > > >> > Thanks > >> > > >> > Arnoldo > >> > > >> > ----- Original Message ----- > >> > From: "Francois PIETTE" <[EMAIL PROTECTED]> > >> > To: "ICS support mailing" <twsocket@elists.org> > >> > Sent: Saturday, May 21, 2005 4:41 AM > >> > Subject: Re: [twsocket] Telnet > >> > > >> > > >> > >> I'm not reinventing the wheel. I saw your samples programs about > >> > >> TWSocketServer too. My problem not is work with various instances of > >> > >> clients. My problem is when the client connect the server, the > >> > >> server > >> > >> redirect the connection to another application. I have the > > Socket.Accept, > >> > > I > >> > >> run another application, in this another application who I do > > establish > >> > >> connection with the client ? It's possible ? > >> > > > >> > > Altough I have nerver done this, I think it is possible. Once you > >> > > have > > the > >> > > socket handle for the accepted connection, you may start another > > process, > >> > > make it inherit the handle and let him process the connection. The > > second > >> > > process may use TWSocket and receive the inherited handle using > >> > > Dup(). > > You > >> > > have somewhat to split TWSocketServer in two parts. The listening > >> > > part > >> > > stay > >> > > in one process and the client handling goes into another one. > >> > > > >> > > -- > >> > > [EMAIL PROTECTED] > >> > > http://www.overbyte.be > >> > > > >> > > > >> > > -- > >> > > To unsubscribe or change your settings for TWSocket mailing list > >> > > please goto http://www.elists.org/mailman/listinfo/twsocket > >> > > Visit our website at http://www.overbyte.be > >> > > >> > > >> > > >> > -- > >> > To unsubscribe or change your settings for TWSocket mailing list > >> > please goto http://www.elists.org/mailman/listinfo/twsocket > >> > Visit our website at http://www.overbyte.be > >> > > >> > >> > >> -- > >> To unsubscribe or change your settings for TWSocket mailing list > >> please goto http://www.elists.org/mailman/listinfo/twsocket > >> Visit our website at http://www.overbyte.be > >> > > > > > > -- > > To unsubscribe or change your settings for TWSocket mailing list > > please goto http://www.elists.org/mailman/listinfo/twsocket > > Visit our website at http://www.overbyte.be > > > > > > -- > To unsubscribe or change your settings for TWSocket mailing list > please goto http://www.elists.org/mailman/listinfo/twsocket > Visit our website at http://www.overbyte.be > -- To unsubscribe or change your settings for TWSocket mailing list please goto http://www.elists.org/mailman/listinfo/twsocket Visit our website at http://www.overbyte.be