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 socketsYES
UDP/Datagram socketsYES
Multi-threadingNO
Blocking socketsNO
POP3/SMTP protocolsNO


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 socketsYES
UDP/Datagram socketsYES
Multi-threadingNO
Blocking socketsNO
POP3/SMTP protocolsYES

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...

  1. 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]

  2. 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 socketsYES
UDP/Datagram socketsUNTESTED
Multi-threadingYES
Blocking socketsYES
POP3/SMTP protocolsYES

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