TCustomFtpCli.DoGetAsync contains lines to open file stream. But as far as I
see exactly the same is implemented in CreateLocalFileStream method. Maybe it
would be better to call it instead?
I would also like to know how can I attach to the moment of creating file to
write. I want to set Hidden
> Sorry Anton, you'll need to change your application to use one of the new
> commands, but the change broke too many things.
Angus, no problem: I use HighLevelAsync directly as it much more flexible and
powerful than predefined methods
HighLevelAsync(ftpConnectAsync, [ftpFctOpen, ftpFctAuth, f
Hello!
Here's routine from TurboPower iPRO component pack which I improved a bit
{ Set properties from Unix style line of directory listing }
procedure TIpFtpFileInfo.UnixStyleParse(Info : TStringList);
var
S, A : string;
i, idx : Integer;
wYear, wMonth, wDay, wHour, wMin, shit: Word;
fs:
>Well, we'll have to somehow determine local code errors then
I meant, "local errors' codes"
--
Anton
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be
Hello Francois, hope you liked your trip :)
>Arno's suggestion looks good and wouldn't break any existing code.
Well, we'll have to somehow determine local code errors then. And not forget to
clear the flag. But at least it will provide a way to deal with the problem.
>As far as I remember, you
There's a socket lib written on C++ which seems to have async v6 resolving:
"2.1.1: Tcp socket Reconnect now works again. Improved ipv6 support.
Asynchronous resolver now works with ipv6 too. Safer pointer handling using STL
auto_ptr in some cases. Thread safety improvements, gethostby* function
> if support for winsock below v2.2 was actually required in
> ICS v7?
As Wiki says,
Version 2.1 of Winsock was supplied in an add-on package for Windows 95. It was
an integral component of Windows 98, Windows NT 4.0, and all subsequent Windows
releases. (Microsoft did not supply implementation
So, what will be your decision?
I wouldn't hurry you, but I have a buggy project based on old FTP components
and wish to rebuild it with ICS.
Looking forward to your answer.
--
Anton
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/ma
>Have you tried calling GetLastError or WSAGetLastError ?
I think it's unreliable because error can occur by exception not by Winsock or
Windows error. Moreover, LastError-s could be overwritten by subsequent API
calls by the moment OnRequestDone will be called.
--
Anton
--
To unsubscribe or ch
Hello Arno,
>If a workaround is needed then IMO a field "FLastLocalError" of type
>LongWord or Integer could receive a meaningful error code and a method
>GetLastLocalError could return and reset the value back to 0?
Well, it's something. Though I'm still not sure what's the best way to deal
w
Hello all,
it's me again and again with a question about FTPCli.
Current manner of reporting local errors is to set code 550 with an explaining
message and call TriggerRequestDone. But I find it very confusing: for example,
when trying to GET some file or directory listing we could receive "true
Hello all,
I faced strange issue in my app. I develop an application which opens ~15
connections to several servers, ~3-5 connections per server. After establishing
the connection it receives data flow.
But when I start it, some connections fail with WSAECONNABORTED (10053) - and
the oddest thin
>The safest way is to PostMessage a custom message from SessionClosed event
>and reconnect from the corresponding event handler.
Well, that's exactly what I'm doing:
if (not FInternalClose) and (FState in [csConnected, csRequesting,
csReceivingData]) then
PostState(csReconnect);
So you re
Good morning to all,
I have done some investigations and noticed one interesting thing: the error
appears only when the socket handle is equal to previous. Here's the log:
(SetState is my procedure to change client's state, and I also added to
TWSocket code two log writes: "TCustomWSocket.Connec
Hello all,
sorry for doubling the messages - from web interface I somewhy can't see the
text of my mails, though in the digest arrived text is present.
wilfried, dZ,
the strangest thing is that socket is created and connected directly before the
bug. Here is what happens next:
2010-04-16 1
*something wrong with my previous mail, retrying...*
>From time to time in my program I encounter strange error on connecting.
Here's a piece of socket log:
2010-04-16 10:55:50 SocketChangeState, wsClosed -> wsOpened
2010-04-16 10:55:50 TWSocket will connect to 200.255.94.90:2101
2010-04-
*something wrong with my previous mail, retrying...*
>From time to time in my program I encounter strange error on connecting.
Here's a piece of socket log:
2010-04-16 10:55:50SocketChangeState, wsClosed -> wsOpened
2010-04-16 10:55:50TWSocket will connect to 200.255.94.
>From time to time in my program I encounter strange error on connecting.
Here's a piece of socket log:
2010-04-16 10:55:50SocketChangeState, wsClosed -> wsOpened
2010-04-16 10:55:50TWSocket will connect to 200.255.94.90:2101
2010-04-16 10:55:50SocketChangeSt
Thank you, Francois, wonderful answer, things are getting completely clear!
--
Anton
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be
Forgot to mention: the 2nd and 3rd snippets are for different purposes and are
members of different classes.
--
Anton
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte
What is the proper way to handle TWSocket.DataAvailable?
I found this way in demo:
function TBinaryWSocket.TriggerDataAvailable(ErrCode: Word): Boolean;
var
Rcvd: Integer;
begin
Result := TRUE;
Rcvd := Receive(@FRcvBuf[FWriteOffs], (SizeOf(FRcvBuf) - FWriteOffs));
if Rcvd > 0 then
Arno Garrels wrote:
> IMHO it's not very easy to keep backwards compatibility.
Maybe, but the question is what specifically should be done to make ICS support
IPv6. On the component level all IP's are operated as strings - no problem
here. Maybe you'll just need to implement a pair of new functi
I wonder, what changes should be done to support IPv6. For now I see onlu few
functions like gethostaddr etc, and some Socks5 stuff. This seems not very hard
to implement (provided that new APIs appear).
--
Anton
--
To unsubscribe or change your settings for TWSocket mailing list
please goto htt
Very strange! I've traced DoHighLevelAsync step-by-step just now, and
RequestDone was called only once, as it supposed to be. Moreover, then I
launched my method without tracing and everything remained OK! I hadn't changed
anything since I started this topic, so it's likely a piece of magic :)
> Don't you just look at the RqType parameter in the event.
Yes, I do, and it is ftpConnectAsync in both cases.
Here's detailed event log:
Login OK!
FtpClient1RequestDone ConnectAsync ==> 1st time
< 220-Microsoft FTP Service
< 220 Hello, Welcome to the TrigNet ftp server
FtpClient1SessionConnecte
Hello!
I've found that when connecting RequestDone is executed twice with FRequestType
= ftpConnectAsync.
I use the following command to login:
HighLevelAsync(ftpConnectAsync, [ftpFctOpen, ftpFctAuth, ftpFctUser,
ftpFctPass, ftpFctAcct, ftpFctSyst, ftpFctFeat]);
and RequestDone is called 1st ti
>What code is forgotten? FEAT sync and async both work fine.
I mean code in DoHighLevelAsync, that is, pushing ftpFctFeat into
HighLevelAsync does no matter.
>If you think new methods are needed, you need <...>
Hmm, quite complicated. Okay, I'll do it some time later.
--
Anton
--
To unsubscri
>Sync FEAT works as well, I use it hundreds of times per day.
Yes, I know, but I do async operations, and implemented my own Login method
which executes all initialization stuff, including SYST and FEAT so that all of
these commands are packed into single request. Anyway, I think the code should
Sorry, I've messed things up. The missing request is FEAT.
--
Anton
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be
Hello!
There's missing part in DoHighLevelAsync - it can't handle ftpFctSyst request.
Here's what should be added:
if ftpFctSyst in FFctSet then begin
FFctPrv := ftpFctSyst;
FFctSet := FFctSet - [FFctPrv];
SystAsync;
Exit;
end;
And another thing: I suggest
Arno, SZ, thanks for your answers!
Idea of removing some CritSections looks nice, as these sections, I suppose,
are unnecessary. This will surely increase overall performance.
--
Anton
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin
Arno,
so your advice is to leave everything as it is?
--
Anton
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be
>ADV_MT enabled (i.e., NO_ADV_MT defined)
I mean, ADV_MT disabled (i.e., NO_ADV_MT defined)
--
Anton
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be
Hello Chris,
I've wrote simple descendant of TWSocket which implements timeout stuff
internally, I could send you the unit if you are interested
--
Anton
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visi
Hello!
I'm writing multithreaded VCL application with following structure:
- one thread holding a number of sockets receiving data
- one server thread to provide remote control
- one main TApplication thread, of course
All actions with sockets are done within their owner thread.
All inter-thread s
Francois,
>Don't get me wrong, I really appreciate your suggestions to improve ICS. If
>you see the history in each source file, you'll see the large number of
>contributors.
I got your point, but I really wonder, what kind of suggestions will you accept
if:
1) small internal changes you don't
>This is an "and" not an "or". The exception is raised when FProtoStr is
>neither 'tcp' no '6'.
Aaaah, yeah, I got it. Seems my mind was too sleepy yesterday ;)
>Probably. Maybe you'll implement those features ?
I could make a try when I have some time, but it will be a kind of sketch
anyway, as
>When Unicode Delphi came out the goal was to port ICS with minimum
>changes, I guess the same was true when Delphi .Net came out.
No argues, but sometimes the things done in hurry should be polished, shouldn't
they?
About .Net: I see that it's in eraly development stage, so let it go as you
wis
And even more:
1)
procedure TCustomSocksWSocket.SetSocksServer(sServer : String);
begin
...
if Length(FSocksServer) = 0 then begin
FSocksServerAssigned := FALSE;
Exit;
end;
FSocksServerAssigned := TRUE;
end;
=>
FSocksServerAssigned := Length(FSocksServer) <> 0;
Having looked at the OverbyteIcsWSocket unit, I've noticed many IFDEF CLR which
probably might be removed.
First of all, I think it's better to turn all buffers from PAnsiChar / array of
AnsiChar to TBytes, as it is recommended by Embarcadero (though one would
declare this type for compilers up
Francois, thanks for answer.
1) Ok, I've got your point.
2) I see your point in this too, but you could add some helping thigs like
those I suggested, aren't you?
--
Anton
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/lis
Angus,
I know and have already looked into the code, and even tryed to understand it :)
But as you've mentioned it's not trivial to grab parsing code out of the
component because of lots custom routines used.
And I'm talking of slightly another thing: a standard and native ICS interface
for parsi
I have a couple of questions about future of ICS.
1) FPC port. Will it continue someday? Or maybe just Linux support (according
to Emb's roadmap to bring something like Kylix to life someday)?
2) Parse listings in FTP client. I do not ask for parsing implementation (as I
understood, you don't fe
> Connect-timeouts are not the only possible ones.
Yes, I know, but connect ones are the most general and used by everyone,
because w/o connection there's nothing to do anyway.
> If you need different timeout values for different states it has to be
> implemented using a timer. We need to keep th
>Any alternates (http://en.wikipedia.org/wiki/List_of_HTTP_status_codes)?
>It's not a constant error AFAIK. IMO 408 was more confusing.
Yeah, that's why transport level stuff should be done in transport (socket)
classes :) We would have OnConnect(Request)Timeout or something like and no
mess w
Arno Garrels wrote
>TWSocketCounter has been added to TWSocket in V7 with properties
>ConnectTick, ConnectDT, LastAliveTick, LastRecvTick and LastSendTick.
Yes, I'm using it in my FTP class, but Start/StopTimer seem easier in my case
SZ wrote:
>I think Arno and Francois is right about not making
>If you build a console mode application, you have to create one yourself.
>See various console mode ICS d?mos. Simple...
Yes, I created TIcsTimer with HttpCli.CtrlSocket as Owner and implemented
Start/StopTimer methods. Seems working, although I don't see yet how can I
control the main function
> how can I add timeouts without messageloops and threads and so on?
I see that there is still ControlSocket.MesagePump in SyncRequest, so I suppose
creating timer will work, won't it?
--
Anton
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.or
Hello!
I'm writing simple console downloader and decided to use sync operations in
order to simplify structure. But I've found that sync requests (HttpCli) do not
use any timeout, so they may last forever in case of error. My question is: how
can I add timeouts without messageloops and threads a
Thank you Angus, I'll look at the code more intently. To take your component
isn't appropriate for me, as I want multiple connections without threads.
--
Anton
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocke
Hello everyone, nobody answered me in old topic, so I'll start a new one.
I really wonder, what the concept of FTPcli's error hadling/reporting is. Some
critical errors, such as exception during creation of local file, are reported
as FTP error codes. So, how I could handle them in a right way -
Maybe you should create an exception handler by assigning OnBgException event -
unhandled excepion is the frequent reason of strange behaviors in async
applications. You can also indeed sniff the data transferred - I recommend
SmSniff, which is as simple as it could be.
--
Anton
--
To unsubscr
Another new questions, using existing topic.
It's concerning error handling in FTPCli. I see that many local errors, such as
exception when opening local stream, are converted into ftp error messages. How
do I handle them (for example, I want to track file creation errors)? And
another question
Angus, I haven't found OnRetrSessionClosed in OverbyteIcsFtpCli.pas, are you
sure it's the right name?
I have file with following latest update in history:
Apr 16, 2009 V7.07 Angus assume STREAM64, USE_MODEZ, USE_ONPROGRESS64_ONLY,
USE_BUFFERED_STREAM
Remove old conditional and supp
>Which SVN ? You have ICS-V5, ICS-V6 and ICS-V7. Latest code is in ICS-V7.
Hmm. Version 7 points that it's ICS 7, doesn't it? Unit from
\SVN\OverbyteIcsV6\ics\branches\icsv7\Delphi\Vc32
--
Regards, Anton
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.
>Probably historical, over the years the code gets standarised and
>simplified if possible, but sometimes old bits get left behind.
So, these bits will be sometime replaced by new ones?
>Exactly what internal version are you looking at, at the top of the unit,
>only v7.08 and later are getting fi
1) The destroying of FLocalStream is widely used as
if Assigned(FLocalStream) then begin
FLocalStream.Destroy;
FLocalStream := nil;
end;
but there's also a specific method DestroyLocalStream, what's the difference?
Maybe it would be better to
Arno, if you care about "slowing" string concatenations (although concatenation
will be executed *anyway*: Time+Sep+Msg), then we could do something like this:
FDateFormat, FTimeFormat, FDateTimeFormat: string;
...
procedure SetDateTimeFormat(df, tf: string);
begin
FDateFormat := df;
FTimeFor
Francois, you're right, properties will go better. I'll be waiting for updates
of Logger in SVN =)
--
Regards, Anton
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.
I have a little suggestion to improve TIcsLogger. The reason is that I wish to
have both date and time in logfile and don't care about millisecs.
Also, I don't want to derive classes, override events and all that stuff, just
want to make output format customizable.
1) add public variable
var Ti
I have discovered some stuff dealing with socket timeouts and wish to know how
to apply them
These are TWSocketCounter and TFtpClient.Timeout. As far as I see, the former
one just stores timestamps of recent socket activities, but does nothing if
there are no activity for a long time. And the la
Interesting stuff, but your site looks down...
--
Anton
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be
3proxy (http://3proxy.ru/board/?l=EN)
Console app with manually edited conf files, but in part of auth settings are
quite simple
--
Regards, Anton
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our w
Could someone explain how to set Opera to receive messages from this list? Not
through my mailbox but as Newsgroups. If this possible, I'll need incoming and
outgoing addresses,
--
Anton
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-
I just thought: why not implement a sent data counter as it's done with
ReadCount? It would be rather useful for sockets on the servers, for example.
--
Regards, Anton
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo
>Only for lazy people that attach the entire previous message including
>all the unsubscribe information.
http://lists.elists.org/pipermail/twsocket/2008-December/039307.html
So Arno is lazy? :)
>But most forums I see also include massive quoting, and show entire
>threads on a single page, so yo
Of course it's just my imho, but wouldn't it better to switch to modern
technologies like message boards/forums? Nailing list... forgive me, but it's
an ancient ages stuff. Main inconvenience is a huge quotations in each mail,
and the further in discussion, the larger they grow, sometimes includ
Arno, thank you for answering! Sorry I wrote directly, I completely forgot that
new month has come and Archives are on the new page.
> In mode rmBinary OnBinaryReceived will trigger. Data move is left
> to the component user.
I was looking on that buffer code and even started to implement separ
> Arno Garrels [TeamICS] wrote:
>Have a look at this demo, if you think it's usefull I can add it to the
>repository.
Oh, I am looking at this and get myself full of questions. Server app is rather
clear, but not the Client, it's quite complex.
1) What's the meainng of SendBinString in Server, i
> Arno Garrels [TeamICS] wrote:
>Have a look at this demo, if you think it's usefull I can add it to the
>repository.
Oh, I am looking at this and get myself full of questions. Server app is rather
clear, but not the Client, it's quite complex.
1) What's the meainng of SendBinString in Server, i
Arno Garrels [TeamICS] wrote:
>AFAIK no, only if you do not read all available data OnDataAvailable
>will trigger again.
Arno Garrels [TeamICS] wrote:
>Thus calling Receive multiple times
>in a loop in on DataAvailable would not work properly.
*embarrassed* how these two statements combine? Why
Hello, Wilfried!
You have calmed me :)
Arno Garrels [TeamICS] wrote:
>As I understand the OP calls receive multiple times in OnDataAvailable
>which is not a good idea.
So, each Recv "launches" one more OnDataAvail in the future? If so, can I
easily read from socket block-by-block? Here's what i
I'm now implementing a server on the base of TWSocketServer. In the client app
I send some message to the server app, which receives it inside
ServerIn_ClientDataAvailable procedure. Receiving is realized step by step to
find a signature of message - i.e., there are several client.Receive in the
Francois, thank you for packages advise. It is quite unulual but looks
convenient.
> You don't need to change the FTP component or any other else. It takes careof
> everything. You should only change TWSocket because you don't want to dothe
> initi in your application.
So, suppose I inherit a c
> You do not need to "redeclare" the properties; all
> you need to do is override the AssignDefaultValue()
> method, like Francois said.
In FTP client, there are two fields of type TWSocket. Whose AssignDefaultValue
should I override to stop them from clearing properties?
> This method is virtual
> IMO, this will even be worse. When you'll use the next update, you'll be
> introuble whatever change you've done in the source.
No troubles, I add my signature in comments to track what I've changed in
source, and use WinDiff to inject your improvements.
> The correct way doing such behaviour
Port, protocol, proxy fields of Socket are cleared on Close. Really embarassing
and hard-to-discover feature.
For my projects, I've commented some corresponding lines in ISC source
--
Regards, Anton
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elis
I see that remote host is always resolved before a call to Connect. Though,
Socks5 makes it possible not to care about it, and it is realized here:
Buf[0] := $05;{ Socks version }
Buf[1] := $01;{ Connect command }
Buf[2] := $00;{ Reser
...and, sorry for flooding, thank you for an example of custom message loop, it
is very useful!
--
Regards, Anton
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be
> Only one message loop is required per thread.
Thanks, Ando! This is not a sort of obvious things, I even haven''t an idea of
it.
I wrote
while not Terminated do
clients[0].MessageLoop;
and launched 10 clients through localhost - everything is OK, application
doesn''t even slow down
So, if I want to implement several sockets in a single threads, how do I
perform a message loops on each of them?
This
procedure TMyThread.Execute;
begin
WSocket1 := TWSocket.Create(nil);
try
Assign event handlers and properties..
WSocket1.Connect;
Arno Garrels wrote:
> On very fast transfers it happens that certain messages are delayed.
> To keep your GUI responsive you can run ICS in a single worker thread.
Yes, I'm starting to understand it )). I'll try to implement one thread.
> Localhost connections are very, very fast, that's no real
If the application receives data very quickly (on a localhost, data is read
from file), DataAvailable cycle "hangs" application preventing all other
actions. I''ve tryed to set wsoNoReceiveLoop, but that didn''t change
something. When I set a *small* delay in my test server app (20 msec), all
w
> Yes they do, since they only want to send it once when downloading 1,000
> files or directories, not 1,000 times.
I suppose it''s better to waste 0.5 sec and 10 bytes of traffic on setting type
each time before download than constantly keep in mind, what type is set now
and whether we have to
Thanks for answer, Angus!
If you need socks proxy for testing, you could use Squid or 3proxy
(http://3proxy.ru/?l=EN)
I am improving the component for my purposes now and could send to this mail
list my modifications.
Another thing is sending TYPE before receiving dir list or file. I think it's
Hi all!
Today I faced with strange behavior in my simple FTP program: if I perform dir
listing adn then try to get a file, RETR is sent and then 15 sec timeout and
error 550. When I download file without dir listing, all is OK.
Digged to the code and wasted some time, I understood that after Sock
86 matches
Mail list logo