> > hi everyone,
> >
> > still working on my ftp service server.
>
> [...snip...]
>
> > The exceptions are triggered because the Client used within the thread is
> > nil.
> > what i don't understand is why, although i set delayedsend to true,
> > the ftp server begins to open the data connection and says the file is sent
> > ?
> >
> > any clue ?
>
> besides, i've noticed that it happens only when the server (as a service) has
> some "visual form".
> i've used your "special unit", Wilfried... it works very well except that it
> seems that when
> you build an visual application, and transform it as a service (with or
> without wilfried's unit)
> keeping the visual part, there're some weird stuff with messages, message
> pump, etc...
> The other part of the thing is that if the service is made as a non-visual
> application (no log window or anything else)
> it seems to work perfectly.
>
> Fran�ois, i think you got the point (using an http server as a small client
> application).
Well in fact, after several hours of testing, there's really a problem :
1 [2005/05/20 16:20:33.250] FTP ClientID=1 : Connection de 192.168.0.49
2 [2005/05/20 16:20:33.390] FTP ClientID=1 Answer : 331 Password required
for 1.
3 [2005/05/20 16:20:33.546] FTP ClientID=1 : Authentification r�ussie
4 [2005/05/20 16:20:33.671] FTP ClientID=1 Answer : 230 User 1 logged in.
5 [2005/05/20 16:20:33.812] FTP ClientID=1 Answer : 227 Entering Passive
Mode (192,168,0,49,144,136).
6 [2005/05/20 16:20:33.890] FTP ClientID=1 : BeginOfThread Thread
Creation File [IMAGES]
7 [2005/05/20 16:20:34.031] FTP ClientID=1 Answer : 150 Opening data
connection for IMAGES.
8 [2005/05/20 16:20:34.203] FTP ClientID=1 TID-$000005A4 : FTP : InThread
File to process : IMAGES
9 [2005/05/20 16:20:34.281] FTP ClientID=1 Answer : 226 File sent ok
10 [2005/05/20 16:20:34.437] FTP ClientID=1 Answer : 221 Goodbye.
11 [2005/05/20 16:20:34.546] FTP ClientID=2 : Connection de 192.168.0.49
12 [2005/05/20 16:20:34.640] FTP ClientID=1 : D�connection de 192.168.0.49
13 [2005/05/20 16:20:34.734] FTP ClientID=2 Answer : 331 Password required
for 1.
14 [2005/05/20 16:20:34.921] FTP ClientID=2 : Authentification r�ussie
15 [2005/05/20 16:20:35.015] FTP ClientID=2 Answer : 230 User 1 logged in.
16 [2005/05/20 16:20:35.109] FTP ClientID=2 Answer : 227 Entering Passive
Mode (192,168,0,49,144,136).
17 [2005/05/20 16:20:35.187] FTP ClientID=2 : BeginOfThread Thread
Creation File [IMAGES]
18 [2005/05/20 16:20:35.281] FTP ClientID=2 Answer : 150 Opening data
connection for IMAGES.
19 [2005/05/20 16:20:35.375] FTP ClientID=2 TID-$00000AFC : FTP : InThread
File to process : IMAGES
20 [2005/05/20 16:20:35.484] FTP ClientID=2 Answer : 226 File sent ok
21 [2005/05/20 16:20:35.609] FTP ClientID=2 Answer : 221 Goodbye.
22 [2005/05/20 16:20:35.750] FTP ClientID=3 : Connection de 192.168.0.49
23 [2005/05/20 16:20:35.906] FTP ClientID=2 : D�connection de 192.168.0.49
And here's the code i'm using :
ThreadCreation (within OnGetProcessing) :
Begin
[..]
//DisplayMsg is using SQLite to store logs
Displaymsg('FTP ClientID='+IntToStr(Client.ID)+' : BeginOfThread
Thread Creation File ['+Client.FileName+']');
MyServer := Sender as TFtpServer;
MyClient := Client as TVigiwareClient;
MyClient.FWorkerThread := TGetProcessingThread.Create(TRUE);
MyClient.FWorkerThread.Server := MyServer;
MyClient.FWorkerThread.Client := MyClient;
MyClient.FWorkerThread.Fdisplay := DisplayMsg;
MyClient.FWorkerThread.FHandle := 0;
MyClient.FWorkerThread.FreeOnTerminate := TRUE;
MyClient.FWorkerThread.OnTerminate := WorkerThreadTerminated;
MyClient.FWorkerThread.Resume;
DelayedSend := TRUE;
[..]
End;
TGetProcessingThread.Execute :
// all variables are ThreadSafe
// Even SendMessage is a thread safe function (uses DisplayMsg which uses
CriticalSections) :
Begin
[...]
try
try
try
if Assigned(Client.DataStream) then
Client.DataStream.Destroy;
Client.DataStream := TMemoryStream.Create;
SQLImage:=TSQLImageList.Create(Nil);
SendMessage('FTP : InThread File to process :
'+uppercase(Client.FileName));
Except
on e : exception do
raise exception.Create('FileToProc Except : '+e.Message);
End;
try
new(lp);
lp^.SelectionType:=uImageInfo.istImageIdf;
lp^.IdRecord:=PFTPSQLProvider(Client.UserData)^.idRecord;
lp^.ExcludeImage:=True;
lp^.ImageFrom:=-1;//StrToInt(Client.FileName);
lp^.ImageTo:=-1; //StrToInt(Client.FileName);
SQLImage.SetParameters(lp);
Except
on e : exception do
raise exception.Create('SQLImage.SetParameters Except :
'+e.Message);
End;
try
SQLImage.Open;
Except
on e : exception do
raise exception.Create('SQLImage.Open Except : '+e.Message);
End;
try
Dispose(lp);
Except
on e : exception do
raise exception.Create('Dispose(lp) Except : '+e.Message);
End;
try
if SQLImage.Recordcount>0 then
Begin
try
While not (SQLImage.Eof or Terminated) do
Begin
lValue:=StrToInt64(SQLImage.Current.FieldByName('cai_idf_image').AsString);
Client.DataStream.Write(lValue, SizeOf(int64));
SQLImage.Next;
Sleep(0);
End;
Except
on e : exception do
raise exception.Create('WhileLoop exception :
'+e.Message);
End;
try
if Terminated then
Begin
Client.DataStream.Size:=0;
ToSendBack:=False;
end;
Except
on e : exception do
raise exception.Create('Terminated exception :
'+e.Message);
End;
end;
Except
on e : exception do
raise exception.Create(e.Message);
End;
try
SendMessage('FTP : InThread File ('+Client.FileName+') process
over!');
SendMessage('FTP : InThread Rewind Client.datastream !');
Client.DataStream.Seek(0,0);
ToSendBack:=True;
Except
on e : exception do
raise exception.Create('Seek Except : '+e.Message);
End;
except
on e : exception do
Begin
ToSendBack:=False;
SendMessage('FTP : InThread General Exception : '+e.Message);
End;
End;
finally
if Assigned(SQLImage) then
FreeAndNil(SQLImage);
Terminate;
End;
End;
Unless there's something obvious, i don't know why the ftpserver opens data for
connection
though i've set DelayedSend:=True in the OnGetProcessing event ?
And now, there's now visual part for it !!!!!!!
i'm really lost....
Guillaume MAISON
-----
Guillaume MAISON - [EMAIL PROTECTED]
83, Cours Victor Hugo
47000 AGEN
T�l : 05 53 87 91 48 - Fax : 05 53 68 73 50
e-mail : [EMAIL PROTECTED] - Web : http://nauteus.com
--
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