dWinsock for Delphi & C++ Builder
dWinsock is a suite of components that make it easy to program internet applications with
standard protocols or your own custom protocols.
NEWS - 12 Dec 2001 Site moved as GetSoftware seems to have
vanished from the face of the earth, along with Keith Hawes :(
Remember dWinsock 3 is incomplete code - if you want VCL components use
dWinsock 2.51/2.75. If you want multi-threading and more flexibility, use
dWinsock 3 and manipulate the socket objects yourself!
NEWS - 16 Jan 2000 The popular internet components for Delphi and C++ Builder are now Open Source.
dWinsock has had three authors through its history - Ulf Söderberg, Marc Palmer and Keith Hawes.
We have all enjoyed working together on the project, but sadly we are all far too
busy too maintain it any longer. This is due to our personal commitments, work schedules,
and also the difficulties that come with maintaining cross-IDE support. Lastly, we always
wanted the quality to be high - and you need lots of time for that.
While it is sad that we cannot continue to work on it,
we feel that it would be a shame to let the work that has been put into it since
the last public release (2.51) go to waste.
For this reason we have decided to make dWinsock Open Source from this day forward. We will
no longer take registrations for the product, but we will continue to support registered 2.x
customers as best we can. The code is now released under the GNU Library Public License.
What happened after 2.51?
Since the release of dWinsock 2.51, we set about completely re-writing dWinsock almost from the ground
up in order to release dWinsock 3. The aim was to add support for multi-threading, blocking sockets, Winsock 2,
non-VCL based code, and also to provide implementations and utilities for the common
internet protocols, including SMTP and POP3 mail, and HTTP. The plan was to provide
flexible code that could also operate in both client and server modes - something that
is not common among internet component suites.
Of course, time and work have got the better of us here. However, dWinsock 3 may well be of
use to many people, and as an Open Source project we hope that it will take its own course,
with users adding functionality to share with others. We have used some of this code extensively
and it has proved to be very reliable.
Documentation: You can download the help files here. [Download]
The help file for dWinsock has not changed since version 2.51 - as a result it is not much use
to users of dWinsock 3 code, but some of the concepts remain the same.
There are three sets of code now available:
|
dWinsock 2.51 - The last public release. Good code (if a little confusing),
good help, good examples! TCP (streams) and UDP (datagram) support. No threading, non-blocking sockets only. No internet protocols
apart from Time. Includes binaries for Delphi 1, 1.02, 2, 3 and C++ Builder 1. Also
includes source code so you can build it yourself for newer IDEs. [Download]
|
| Features |
| Client + Server sockets | YES |
| UDP/Datagram sockets | YES |
| Multi-threading | NO |
| Blocking sockets | NO |
| POP3/SMTP protocols | NO |
|
dWinsock 2.75 - this is essentially dWinsock 2.51 with
any 2.51 compatible changes and fixes, and with POP3 and SMTP code added and some utility
classes/functions. The help is 2.51 help unchanged - i.e. there is no documentation for the
POP3/SMTP code, but there is a wrapper component for it. You must build it yourself - we have
built it on Delphi 4 to check it works. [Download]
|
| Features |
| Client + Server sockets | YES |
| UDP/Datagram sockets | YES |
| Multi-threading | NO |
| Blocking sockets | NO |
| POP3/SMTP protocols | YES |
|
dWinsock 3 - Work is definitely not complete on
this and there are bugs. It has been completely re-designed and comes in two parts.
You must have at least the first part. The second part is optional.
NOTE: The VCL components for dWinsock 3 are nonexistent/incomplete. Only
use dWinsock 3 if you are happy using the classes directly without VCL wrappers. It's better this way anyway...
- Core dWinsock code - comes with fairly reliable (i.e. used in real
projects) multi-threaded client and server support, blocking/non-blocking sockets, and
no dependency on the VCL. Also includes some bug fixes to the LineSocket code of 2.51 and
new methods for blocking operation. The basic dWinsock 3 libraries allow you to create efficient
clients and servers without any components or VCL code in your project. You can write
socket-based console mode applications or libraries or web extensions that are
typically only 100KB in size. There are some VCL component wrappers but they are incomplete, probably buggy, and somewhat
untested. There is scope for these component wrappers to be improved
Status: FUNCTIONAL - client/server code seems fine. Multi-threading seems fine,
and so does non-blocking/blocking operation, although protocol implementations must use
some explicit code if they wish to ensure they work in both blocking and non-blocking modes.
NO NEW HELP FILE. You must build it yourself - we have
built it on Delphi 4 to check it works. [Download]
- dWinsock "Pro" code - this code includes
support for SMTP, POP3 and HTTP protocols. Also there is a framework for multi-part MIME
parsing, with implementations for UUEncoding and Base64. This code has been used successfully
in a multi-threaded POP3 client application. The status of the SMTP and HTTP code is not clear,
and the server-side code of all three is also unimplemented or partial. Also included are
the Socket Factory class, HTTPClientBatch, and code for parsing VCARD files.
Status: INCOMPLETE BUT FUNCTIONAL - POP3 client works fine in blocking/non-blocking and
async and/or multi-threaded. MIME multipart code works OK. VCARD support experimental. SMTP
and HTTP code may not compile, with residual 2.51-style code. You must build it yourself - we have
built it on Delphi 4 to check it works. [Download]
|
| Features |
| Client + Server sockets | YES |
| UDP/Datagram sockets | UNTESTED |
| Multi-threading | YES |
| Blocking sockets | YES |
| POP3/SMTP protocols | YES |
|
ALL code here is "as found". We are sorry that we cannot provide our usual level of documentation
but there simply is not the time (or any point with incomplete code). However as the source
code is free to everybody, you should be able to work out how to use everything quite easily.
To make your life easier, in dWinsock 3 we did the following:
- Renamed all completed classes to use the TdWs prefix and improved naming of classes.
- Greatly simplified the architecture. There is no confusing reliance on VCL components.
This also makes writing component wrappers for the underlying code much easier.
- Provided great flexibility and improved the OO structure.
Remember: the key to implementing protocols is that you derive from the appropriate socket base class.
Then write a component wrapper for that, if you need one!
Resources
The dWinsock support mailing list is still running. This should be the place you go to if
you want to discuss dWinsock with other users. Hopefully people will provide enhancements
to the open source dWinsock here. To join the list, send email to
listserv@getshareware.com with
the SUBJECT blank and the BODY reading: subscribe dwinsock-sup your_full_name.
We may update this site with links to other dWinsock 3 users who publish code or examples, time
permitting. If you have some dWinsock 3 stuff to share with the world, please let us know.
The authors
It's been a pleasure working on dWinsock over the last 5 or so years, and we've made some
good friends. Ulf is currently working at Possio designing
and implementing mobile GSM fax machines. Marc runs a consultancy called AnyWare Ltd. and
is currently working with Ulf to enable users to do cool internet stuff on those GSM fax machines. Keith helps
run Get Software who do a great job of online
sales processing.
You can contact Keith and Marc by e-mail.
Marc Palmer: marc@anyware.co.uk
Keith Hawes: khawes@getsoftware.com
Thanks for all your support. Please take dWinsock to new heights!
dWinsock © 1995-2000 Ulf Söderberg, Marc Palmer and Keith Hawes
|