If anyone else is using the smatters.com ftpcommon.pas FTP LIST parsing code,
I've just discovered a nasty bug converting MS-DOS formatted times used
(sometimes) by Windows IIS FTP. 12:30AM was being converted to 12:30:00, not
00:30:00.
A fix is needed in the function FormatTime1, inserting
Given you want best performance one should use the async/none-blocking
methods, however in TFtpCli each method has also a blocking (sync)
counterpart that allows you to code more like the Indy way (slow).
Indy might be slow, I really don't know, but I don't see using the sync
methods in ICS
However the speed depends of course, if you have just a single
instance, it makes no difference, but how do you realize multiple,
concurrent i.e. FTP-dowloads in sync mode? You would have to go
multithreaded, pooled or
one thread per connection but that's definitely slower than having
Do you say that you are convinced MsgWaitForMultpleObjects() is faster
than Sleep()and ProcessMessages; ;-)
Both MsgWaitForMultpleObjects and Sleep seriously slow down a program
that's
trying to do multiple jobs at the same time.
Angus
--
To unsubscribe or change your settings for
Hm, could that message pump be realised by a timer in the dll where the
application.processmessages is called each onTimer event?
You can not use a TTimer since that uses windows messages and thus
needs the message loop. But you can use the windows SetTimer API with
a callback. I use such a
i'm wondering about the way to implement a FTP server (with thread on
GetProcessing) within a Windows Service ?
Any windows GUI application can be run as a service, provided it never
asks for any input from the user. I use a very simple real service
that runs the windows program, and sends
It's won't help you, but I have complex NT services doing several SQL
database updates a second from packets received by TWSocket, and more
rarely sending email using SMPTCli, and they run for weeks at a time
without problems.
I don't use threads, they are not necessary despite our level of
In the main execute function I just want to wait until each of the
requests responds triggers the OnRequestDone event. How can I do
this in a service app?
The service excecute method needs a message loop added, which replaces
the Application.Run method that drives an interactive
I have some vehicles with GPRS modems connected to O2 in the UK. The
problem I have is when the O2 network drops a connection to my
server
- i.e. a close not initiated from the vehicle, or my server. When this
happens, I never see a disconnect, so the next time the unit reports
in, it
What Angus do is an approach, but indeed as he claim, it can get a
expencieve, specially when the vehicles are in other countries.
Fortunately my vehicles don't venture more than 10 miles or so from the
garage g
We're also looking at DVB datastreams for one way data when they are
away from
IP Helper is the only thing you need, no specific driver if it's only
bandwidth.
It permit also to get separate traffic for each card.
Sorry, you are wrong. IP Helper only monitors all traffic through a
card, it does not distinguish LAN or WAN (via a router) traffic.
So it is useless for
I think that the BME only checks the netmask of the adapter (you can
get
this via IP Helper) and then treats anything from those addresses as
local traffic. That's how I would program this, anyway.
Quite probably, but the original question was how does it get
statistics per connection,
OK I understand what you mean. IP Helper can distinguish between
netcard but not IP on same card, that is why I told you about WinPCap.
I installed WinPcap several years ago, and found my PC less stable that
previously so never used it. But I guess it's more reliable today.
BMExtreme
I am using pop3-component. I need to decode the data that I receive.
Now I get:
This is the subject line
2005-07-11 17:12:40 =?iso-8859-1?B?dGVzdCDl5PYgYWJj?=
These are known as RFC2047 encoded words.
You can decode them using MimeDecEx from the UserMade page, which I
hope is the version
Yeah, I imagined this would be it but is there any demo on how it
works?
These are known as RFC2047 encoded words.
You can decode them using MimeDecEx from the UserMade page, which I
It's a simple function, hardly needs a demonstration project.
function TMimeDecEx.DecodeHeaderLine
May be it's possible with SOCK_RAW socket type. Have you read the
article Hands on TCP/IP programming in Delphi by Alfred Mirzagitov?
It's in the TCPIP sub directory.
http://www.thedelphimagazine.com/disks/dmag101.zip
It's not the article but some interisting demo code, including a
A server may reject a none local From address, but practically most
servers don't
Several UK ISPs do validate the From address as being one of their
domains, BT ADSL in particular, to stop false Froms being used.
But this is very inconvenient for people using ADSL for connectivity
only with
Can you recommend a certain sniffer?
Or is it possible to monitor local traffic with raw sockets?
My Socket Monitor ICS component will be ready later today or tomorrow,
it uses both ICS raw sockets and WinPcap. There are 'sniffer' and
'statistics' test applications.
However raw sockets
An unrelated question. WinPcap shows a vast number of packets being
broadcast around my network with an ethernet protocol of x88AD,
which
is not in documents I can find, nor does Ethereal describe it. Not
quite sure which MAC address is sending them, but some MACs are
replying.
bug reports that may have to do with hardware DEP enabled on my
executables
I had a similar problem, which turned out to be the Petite executable
compressor, but a new version was done within 24 hours of my report.
BTW: In my X509 snapshot I sent recently a dfm was missing
Yes, got
I've just written two new components for monitoring ethernet packets:
1 - Raw sockets (W2K and later) using ICS, does not any other software
installed, but may not capture send packets on W2K and XP, only W2K3,
and ignores non-IP traffic.
2 - Winpcap device driver, needs to be installed (two
*Subject:* Re: [twsocket] Monitor sockets components
*From:* Maurizio Lotauro [EMAIL PROTECTED]
The source and executables are available from:
http://www.magsys.co.uk/download/software/monsock1.zip
I downloaded it today, but I see only one executable.
Sorry, the latest version did not
Is there a bullet-proof way to get a remote File Size using the
TFTPClient component?
FEAT Command - numerous extensions have been made to the FTP protocol
over
the past few years, although support of these new commands is very
sporadic.
RFC2389 describes the FEAT command, which
Does anyone have an example of building a traceroute component using
ICS?
My threaded ping component on the usermade page includes a trace route
example. Unless you use threads, ping is blocking.
Angus
--
To unsubscribe or change your settings for TWSocket mailing list
please goto
But from FTP server I get:
16.08.2005 10:36:17 - Executing requested command...
chmod 644 test.txt
500 'CHMOD': command not understood.
It means exactly what it says, the FTP server does not support a CHMOD
command.
There is no standard FTP command to set file attributes, you'll need to
If you don't understand what we are talking about, please ask some
questions to clarify. There are no stupid question, only people afraid
to ask.
I've not taken much notice of this because:
1 - the authentication change to HttpCli broke one of my applications
and it cost a lot of money to
How do you think that all we heavily tested for weeks if nobody,
except the developer(s), made any test?
I only have a single development environment, and I need to be able to
produce bug fix versions of several applications at short notice, often
hours, that get widely distributed within
Don't go too fast to remove existing code because then it will be very
difficult to merge your
changes and those from others including me. Risks are that you either
have to reimplement your
changes in the next version or that you take a one way ticket to your
own version diverging from
You personally agreed a year ago that the current released version of
ICS would be last to continue support for long obsoleted compilers.
Yes, and this is what I stated again in my previous message.
Who are these people that actually need to use new versions of ICS on
Delphi 1 to 3? Why
Because there are still a lot of people using old compilers,
frequently to maintain existing
applications but also to develop new ones, even with Delphi 1 which is
used for embedded systems using Win 3.x !!
OK, can all those in this list using Delphi compilers earlier than
Delphi 5, Delphi
This is a useless discussion.
Only because you don't agree with your customers, and free helpers.
For your convenience, you want to inconvience others.
Angus
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://www.elists.org/mailman/listinfo/twsocket
Visit
The question is whether current users that need new features should
suffer to keep those one or two users on obsolete compilers happy.
You are wrong. Current user doesn't suffer because of old compiler
support. Never.
Sorry, I disagree. Whenever I make improvements to ICS source, it
for sending noops while uploading (to keep the control connection
alive) i done some bad things ;-)
Which FTP server needs this? I upload 20 meg files all the time and
never see this with IIS/5 or ICS FTP server.
Did you try using a valid command like PWD rather than NOOP?
Angus
--
To
thats great... i dont need ssl but if it solves my ftp problems, i am
happy to become a contributor.
i go to hollyday at the 25.8.05 and i shold fix my code before do you
think i can have the TMagFtp code today (before francois receive the
money).
Please copy me in on your email to
So you get it. Can you keep it and read when you have better time?
I've already said I will try to test your HTTP component when I have
the time, but that I will not use anything with a DLL, which is what
the zip I downloaded seems to contain. So it seems I have to do extra
work implementing
Huu??? No no, this is the original version made by Xavier. What I
wrote referred to my version.
I just sent a release candidate to Francois, wait his announcement.
It was the latest version available from the ICS web site. If GZIP did
not work in that version, why was it posted atall? Why
And what was the cause? In TMimeDecEx you set destination stream *after
the part was decoded*. You lose your data, because you *don't save it*:
Hope this helps... :)
Not really, you say there's bug in TMimeDecEx, but you don't say what
you changed to get your 'result'.
The stream is never
Is GET faster than PUT?
In my tests GET performs seven times faster than PUT.
Server caches files, is that the reason?
Yes, reading a file will always be much faster than writing one,
particularly on a heavily loaded web server where much of the content
is coming from memory, and stuff is
Excuse me, but how I can know that you have missed the key messages
and don't download the file that we are speaking?
There are a snipped of messages from Francois in this mailing list:
Subject: [twsocket] HTTP client component and document encoding
Date: 21 Jul 2005 17:15:19 GMT
Yes, I
I've finished updating the ICS FTP client and server components to
support 64-bit streams and thus single files larger than 2 gigs, when
used with Delphi 6 and later.
The updated components may be downloaded from:
http://www.magsys.co.uk/download/software/ftp2101.zip
until they become
Testing was probably a lengthy story with such large files ;-)
Around five to six minutes for 4.6 gig download across my LAN, it's
supposed to be gigabyte speed but it's only Netgear components and I
don't really see the speed I'd expect. Uploads are at least half the
speed. Also quite a
I would bet that a buffered stream class would boost performance
dramatically.
I do recall a recent discussion about buffered class, but can not find
it. Note sure how easy it would be to add, due to some of the 64-bit
issues. The FTP server is crying out for a file buffer system, so that
And since you're too lazy to do a such simple thing,
It's unfortunate your messages are so badly composed, full of capital
letters which makes them hard to read, and essentially very irritating.
I'll spend my time doing useful things, like enhancing ICS components
properly, for the benefit
Are you sure you were using soBeginning, soEnd etc. instead of
soFromBeginning, soFromEnd.
I had this problem when I started using int64 streams and that was the
solution.
These have the same numeric values so should not make any difference to
how the stream is used.
soFromBeginning =
As far as I can see, no-one else in this mailing has attempted to test
the new TMimeDec component, just me. I've found it does not work as
well as the previous component, ignoring complete parts of the email.
The internals of the component are irrelavant to me and most users, we
really don't
MDOT has some usefull things on board to send/receive binairy data
over TCP and timeouts but it does not provide any ACK to be sure
packet is delivered on the other end. Winsock has this internally
but there is as far as I know not a way to tell the application.
You could use the raw socket
I think the reason madExcept didn't catch it is because BgExcept
caught it?
I bought MadExcept earlier this week and have been playing with it.
It's really designed for applications without any try/except handlers,
and misses anything already caught in that way, unless you add the
function
Check out DnsQuery component, I think that's what you need.
Can it be done and how ?
This is a very simple MX lookup I wrote a long time ago, it fills two
arrays with a list of SMTP servers for the domain and their priority,
you are supposed to try the lowest numbered preference server first,
Angus, I took a brief look at your code (btw: I couldn't find it in
the new ICS Beta from yesterday).
Nor I, it's been lost.
Large files can only be used in the client with TFileStream, since
THandleStream and TMemoryStream don't support sizes larger than 2
gigs,
THandleStream
I've uploaded a tiny buffered file stream class as well
as a simple test program. It is amazing fast when small
chunks are read/written. Seeking is slower than TFileStream :(
I'll try in one of my applications, but it won't be until next week.
For the FTP server, I often have multiple PCs
Starting from various TCP client inlcuded in ICS examples, I tried to
send through TWSocket a mix of text commands and records but I wasn't
successful.
On the server, I receive correctly the text command but not the
record. What I'm doing wrong?
You would need to be listening with
It is my understanding that THttpCli does not timeout.
Say, it has connected to the web server and sent the request.
But if the server doesn't send anything back, THttpCli will
not timeout. Am I correct?
TCP/IP has timeouts for opening a connection, although not usually once
the connection
are the Start procedures, from ThttpServer and TFtpServer, blocking
procedures or not ?
No, they just set the server to listen for incoming sessions.
Angus
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://www.elists.org/mailman/listinfo/twsocket
Visit
I'm having a problem with the Ftpcli component (V2.99 D5).
99 times out of 100 the quit command works correctly, but on the other
time FTPClient1.Quit returns false.
Please try using FtpCli v2.100 or later (beta dated September 2005 or
later), it contains a fix for a problem uploading small
I am using FTPCli to try and get a file from an FTP Server and copy it
to a local destination. The problem is I only want it to get the file
if the file has been updated since I last got it.
The fastest way to do this is to use my high level FTP TMagFtp
component, which includes all the
The question is: Should the HTTP client component implement this
relative path removal algorithm ?
In my opinion it should.
I've not reported it before, and I've lost my fix due to installing new
ICS versions over the last month. But there is another problem in
relocation when the
However, does anyone have a small sample of code to retrieve a
directory, and - for example - place the contents into a listbox?
You need to parse the directory listing returned, there are two common
formats and several more less common. There are some functions at
I wonder if we shouldn't simply push the compression code into that
beta. This is probably the only way to have people really testing it
(well beside pushing it into the release).
I suspect many developers, including myself, use the 'beta' as their
working version of ICS in live
I'm not too happy with c-obj files. I would prefer one of the many
Delphi ports.
Why? Using a Pascal port of a C code is a maintenance nightmare, bugs
may have been introduced during the port, and it's unlikely to be kept
up to date with the latest ZLIB version, so may have security
I suggest that the compression part (i.e the one that implement the
gzip using the dll) should not be included in the library (I mean the
ICS package, not the distrbuted zip) but as demo or similar. Then it
is a choose of the developer if include it (or another
implementation) in the
I don't have the knowledge to understand who is right (actually I
don't use Mime), but I have the same opinion of you: if something is
wrong it must be corrected even if this mean that it is no more
backward compatible.
But at the same time the developer must be warned about a change
like
there i don't agree with you. if you consider ICS, it's almost VCL
free. it shouldn't be more dependant on any VCL component.
VCL, RTL, it's all the same thing, components delivered as standard with
Delphi. ICS is not VCL/RTL free, it uses classes with strings lists,
streams, etc. ZLIB is
FYI, in FTP servers, Mode Z is used for ZLib'ed (deflate)
transfers.
One question could be: should the client automatically decormpress
the downloaded file or it should be done by the application?
Compression is transparent to the user when Mode Z is used, the client
sees an uncompressed
Original Message
*Subject:* Re: [twsocket] HTTP compression
*From:* Maurizio Lotauro [EMAIL PROTECTED]
*To:* ICS support mailing twsocket@elists.org
*Date:* Tue, 22 Nov 2005 17:11:01 +0100
Scrive Angus Robertson - Magenta Systems Ltd [EMAIL PROTECTED]:
[...]
I'm sure
To store or send component data I use XML format.
XML-text is written without the help of a third party component
however
for parsing I use Stefan Heymann's TXmlScanner/TXmlParser
http://www.destructor.de. It appears to be the freeware solution with
less overhead. Should I better avoid use
I found a bug in the FtpCli - FtpSrv combination.
Steps to reproduce:
1) (Client) put FtpCli into passive mode
2) (Server) assign FtpSrv.FtpServerValidateGet
3) (Client) request something from the Server - e.g. with
FtpClient.Get
4) (server) fail the resulting RETR command on the
The data-socket must effectively be stopped from accepting a
connection once the primary transfer command has failed.
I found your change made no difference to the issue of the extra
response being generated, since it was triggered when the data socket
was closed, and it was already open
Failed to Start Monitor - Error 10022 in function WSAIoctl(SIO_RCVALL)
Invalid argument
Sorry, no idea. I'd make sure the latest network adaptor drivers are
loaded, it will be faulty drivers causing the problem.
Angus
--
To unsubscribe or change your settings for TWSocket mailing list
Does THttpCli support chunked encoding? If so, how do we indicate we
can accept it from server?
No. If such an encoding actually exists, the latest client beta
supports content coding 'plugins', so you can write a new unit based on
the current GZIP coding version, and simply add it to the
Chunked is a transfer-encoding not content. It means there is no
content-length in the response header and the client simply gets the
(size of) each packet separately and then cuts the connection when
the server tells so.
If you think it is so important, why don't you actually do something
Following a fix:
The data-socket must effectively be stopped from accepting a
connection once the primary transfer command has failed. If the
data-socket is simply closed then on client-side an error is raised -
so my solution is not to call datasocket.accept on the incoming
connection -
I've put a zip containing the latest HttpProt unit and various ZLIB
units on my web site at:
http://www.magsys.co.uk/delphi/magics.asp
Changes include fixing a looping redirection problem, and adding support
GZIP compressed content encoding using ZLIB. Maurizio Lotauro added
content encoding
- why two declarations? (may be for SSL but it seems not)
It is because of SSL, there are more commands.
- why 5? while it seems there're only two new commands for SSL (AUTH
and PROT) which are not added to the FCmdTable with AddCommand
(at least in TFtpServer)
Can not recall exactly
I seem to be losing memory in the Socket Buffers.
Use FastMM4 in the application, with {$define FullDebugMode}, from
http://fastmm.sourceforge.net. When the app terminates, it will show
which memory was not released. Turn off debug, and the application will
run faster anyway. Beware you
Error 10048 in function Bind Address already in use
Stop the other web server first.
Angus
--
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
I wonder if I should also change all class names.
Yes, definitely allow v5 and v6 to co-exist without messing around
enabling and disabling packages all the time to maintain old projects.
I prefer use Delphi 6 instead Delphi 7 but I think it
should theorically work without
Have you installed Delphi 7 update #1 ?
Yes, years ago.
I consider .NET just like Win32 was a few years ago: this is
defenitely Windows's future. No choice. It is better to prepare
sooner than later.
When Microsoft believes .NET is sufficiently versatile, fast and stable
for
I do not agree with you. I can't say it never happened, but it was
very uncommon that any change in ICS required _application_ code
change.
The most recent example is SSL, the versions in the last few months
required numerous application changes over the original implementation,
it's all
ICS-beta V5 and V6 have been updated
V5 is OK, but it looks like the V6 zip is from 2 Jan.
Angus
--
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
In ICSStreams, there is an exception type called SFCreateError that
cannot be found anywhere
That literal is in RTLConsts.
Angus
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://www.elists.org/mailman/listinfo/twsocket
Visit our website at
Am I naive to think that I can come up with a solution for a Telnet/S
with file xfer options(xyz-modem)?
ICS handles SSL telnet quite happily, you would just have to add the
zmodem protocol on top, which you can find for free on the internet,
it's part of the Turbopower Async Pro package.
how do you make async packets into tcp/ip packets.
A packet is a string of characters, it's independent of whether it's
being sent using serial comms or TCP/IP.
I'm not saying it will be easy to extract the Async Pro Zmodem code, but
it can be done, if you don't want to pay for a package
I answered this several days ago, IcsZLibDll.pas is not needed for ICS
unless you change defines to use the zlib DLL instead of OBJ files, just
remove it from whereever you have found it.
Angus
Original Message
*Subject:* Re: [twsocket] Installing latest beta under
I should remove what? I do not understand. There was no BCB package
and I created one from normal ICS beta package.
IcsZLibDll.pas is not in the ICS package.
Angus
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://www.elists.org/mailman/listinfo/twsocket
Suppose you have a server running on an 100 MB WAN-connection,
and there are clients that have 100MB upload and download lines,
your server will be blocked immediately.
But we were not talking about servers, only clients.
Angus
via a 10 Mbit cable modem g
--
To unsubscribe or change your
Each throttler requires a different interval. Perhaps a timer of 1ms
interval can cover all?
I think you'll find that windows timers and GetTickCount only have a
resolution of about 20ms, which is also how often your threads get CPU
time.
Angus
--
To unsubscribe or change your settings
We want to use ZLib1.dll in our projects. Is this what you (Angus)
meant by built with dll or standalone?
This should be very obvious from a cursory examination of the FTP client
source code:
{$I IcsZlib.inc}
IcsZlibHigh,
{$IFDEF USE_ZLIB_OBJ}
IcsZLibObj, {interface to access
I think he wants to sniff raw traffic. AFAIK Angus has written a
component for that.
http://www.magsys.co.uk/delphi/magmonsock.asp
Angus
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://www.elists.org/mailman/listinfo/twsocket
Visit our website at
It create CHM files from source and looks to me very promising.
This is by far my preferred way of generating help, from comments in the
source modules themselves, then you always know the properties and
methods are 100% reliable. But it will increase the size of the source
files
A wiki allows many users to work on the same stuff, that's something
totally different. Help-comments in the source files would nullify
this approach.
I've no real idea what a 'wiki' is.
However to generate an empty framework/skeleton it will
probably be necessary to use such a tool and
I have written an ap using the POP3 component to access mail from my
ISP. I can also access my email via the internet. The ap works
perfectly, but my ISP has recently added a spam folder
Effectively the mail is being put into a separate mailbox, you just log
into that mailbox instead. My
Is anyone actually using this yet?
For testing or for real commercial applications?
I've avoided v6 so far since I only use ICS in live applications, and
can not afford to let something untested onto my clients. And I guess
there's a few protocols left to migrate, and it needs lots of
This is my demo trace route application you are trying to convert.
I cannot understand completely these parts:
for I := 0 to Pred (T) do-(Pred(T)?)
find PingThreadList, (Succ??)
Pred (T) means T-1 but may be more efficient for the compiler,
Succ (T) means T+1, ditto.
I want to make traceroute function in my project...
but... without normal work with TTL it's impossible :(
Download the threaded ping component from the usermade page or
http://www.magsys.co.uk/delphi/magics.asp, which includes a fully
functional trace route application, where TTL does work.
Can I get the IP address of an incoming TCP/IP session before accepting
it, so I can ignore it?
ListenSocket.sin.sin_addr.S_addr seems to give it sometimes, but
probably only because it's remembered the previous session.
Angus
--
To unsubscribe or change your settings for TWSocket mailing
Can I get the IP address of an incoming TCP/IP session
before accepting it, so I can ignore it?
You can't.
You have to accept the incomming connection, get the remote IP and
then, if you decide to, abort it.
OK, so I accept the connection into a temporary TWSocket, get the IP
address
Can you explain why you need to so ? Why dup ? Just for me to
understand if you usage may be one I may need sometime.
Dup is what you do whenever you accept an incoming connection on a
listening socket, passing it to the client socket.
TCP clients sockets are usually dynamic, but in this
To summarize : the problem I'm having is that I cannot detect that a
'stream write error' (e.g. due to insufficient disc space) has been
encountered
If your application is downloading large files, it would be much better
to check for sufficient disk space when the header is downloaded
From your OnSessionAvailable, you call Accept on behalf on the
listening socket. You get the socket handle.
Then you call WSocket_getsockname to get the remote IP/Port.
Thanks, all working now. Also needed WSocket_closesocket to close
connections I want to ignore.
I did look on the
These components use ICS:
http://www.magsys.co.uk/delphi/magmonsock.asp
He's using my components already, he does not want to use WinPcap (which
will fix the problem) due to install issues, and I've been unable to
help him about raw sockets, support for which seems sporadic
on the OSs and
1 - 100 of 714 matches
Mail list logo