[-=-] [-=-]  
[Main Page]
[Mailing List]
[Library Guide]

[25th May 2009] [10th February 2001] [28th January 2001] [18th November 2000] [11th September 2000] [9th September 2000] [12th June 2000] [9th June 2000] [10th April 2000] [11th March 2000] [27th February 2000] [24th November 1999] [31st October 1999] [24th October 1999] [19th September 1999] [28th August 1999] [22nd July 1999] [30th June 1999] [6th May 1999] [8th April 1999] [7th April 1999] [21st March 1999] [12th February 1999] [4th February 1999] [18th June 1998] [15th July 1998] [18th August 1998] [7th November 1998] [8th December 1998] [18th December 1998]

25th May 2009

Removed the Estonian mirror site. Updated links to point to my new webspace. Corrected DJGPP mirror URLs, and made them point at the TU-Wien mirror.

10th February 2001

A snapshot of my development sources from CVS is now available. Anyone interested in developing libsocket further is encouraged to look at this snapshot!


28th January 2001

I've decided to end libsocket development. Here is the announcement I sent to the libsocket mailing list:

As the title suggests, I am ending development of libsocket. I no longer have the time, energy or interest to keep on developing libsocket to a good standard. It's a bit sad, because I've learnt a lot since I took over maintainership from Indrek Mandre.

I did make a little progress towards proper Winsock 2 support (using WSOCK2.VXD) at the end of December. If anyone would like to take over maintainership, please mail me and I'd be happy to discuss it and send you my current source tree from my personal CVS.

Anyway, thanks for the help & usage of libsocket over the years. I'm sorry to end development, but libsocket's just too broken.

18th November 2000

HOORAY! libsocket 0.8.0 has finally been released - please see the download page for details.

I hope to do the next release a little bit faster - much less than two years. ;) I will try to add Winsock 2 support using WSOCK2.VXD at the end of December. Hopefully we can then dump the buggy SOCK.VXD.


11th September 2000

libsocket 0.8.0 pre 1 has been released - please see the download page for details.


9th September 2000

I have added man pages in short filename and long filename format to the libsocket 0.8.0 pre-release 1 section of the download page.These man pages are UNSUPPORTED. Just extract them into your DJGPP directory. Then type e.g. man recv.

libsocket 0.7.4 will actually be released libsocket 0.8.0, since so much has changed. Also, the interface for WSOCK2.VXD is now known. Currently SOCK.VXD is too buggy to use, so hopefully using WSOCK2.VXD will bring libsocket's reliability back up to the level it has with Winsock 1.


12th June 2000

I have made several updates to the web pages. The libsocket 0.7.4 beta 4 documentation is now available from these pages.


9th June 2000

libsocket 0.7.4 beta 4 has been released - please see the download page for details. Here's the announcement:


I'd like to announce the 4th beta of libsocket 0.7.4, a BSD-style
socket library for DJGPP.

This beta release fixes some more bugs in the Winsock 2 support. Many other
bugs have been fixed. Basically this release should be more reliable than
beta 3 is/was. The documentation is now in info format, which means the long
filename problems with the man pages have disappeared. The documentation
archive also contains the manual in HTML format. Some more work has been done
on the  Unix domain socket support, but their code is still in an alpha

I'm looking for willing people to help develop libsocket. Coding,
documentation or any other contributions are extremely welcome. If you are
interested, please join the libsocket mailing list.

If you use libsocket, you should download this beta. If you're not convinced,
here are some reasons:

- You have problems with version 0.7.3.
- You are interested in hacking/contributing to libsocket.
- You like the cutting-edge feel of beta programs.

The beta is available from the Simtelnet archive in the beta directory of


Please join the mailing list, if you want to keep up with bug reports,
developments, development snapshots, etc. If you have any questions relating
to libsocket, please mail me and I'll be happy to help.

Thanks, bye,

Richard Dawe <richdawe@bigfoot.com> http://www.bigfoot.com/~richdawe/
6th June 2000


10th April 2000

I've just produced a second patch for libsocket 0.7.4 beta 3 - see the download page to download the patch. This fixes problems found when compiling with binutils beta.


11th March 2000

Today I sent the following mail to the DJGPP newsgroup, in the run up to the libsocket 0.7.4 beta 4 release:

I estimate that libsocket 0.7.4 beta 4 will be out within the next couple
of weeks/month. libsocket is a BSD sockets library for DJGPP, which uses
Windows's built-in networking by some low-level hackery.

I would appreciate it if anyone using libsocket 0.7.4 beta 3 or one of the
later development releases would report any bugs to me. There is a list of
known bugs here:


Even if a bug has been reported, I would like extra information, because I
do not have enough equipment to test libsocket properly.

libsocket 0.7.4 beta 4 will be the last beta before the release of 0.7.4.
I have not really been able to test it properly, so I'd like some help
from some willing testers.

In fact, I think it's time for an announcement: This is probably the last
version of libsocket I will do any active development on. I do not have
enough time to maintain it to the standard I want _by myself_. My interest
in the project has waned over the past six months and I would like to do
other things (with DJGPP) such as a package manager for DJGPP. If
anyone is interested in working on libsocket, then please contact me. I'm
happy to remain as the co-ordinator/maintainer of libsocket, offering
advice, knowledge, etc. where possible, but I just don't have time to do
the investigative work needed to move libsocket on. This wasn't an easy
decision to make, but it's one I think needed making.

Enough said, I think.


27th February 2000

I've made some minor updates to the web pages - I've separated the web pages from the libsocket sources, which should make maintainence easier. There is now a ports page. I've also integrated the development page into the main libsocket pages.

State of the code: I did a fair amount on libsocket in my Christmas vacation. Hopefully I will get libsocket 0.7.4 out sometime in the next month or two. It's mostly done - I fixed a large number of bugs in the Unix domain socket (so they're usable now) and sorted out the split between the upper BSD layer and the lower interface layer. In short, it should work better. I'm going to add some emulation of the MSG_PEEK and MSG_WAITALL flags on recv() in some kind of generic way. After that I think I will release it. Most of the documentation is info format now - I've removed the man pages.

I also merged in the Watt-32 code to libsocket, to add DOS support. However, I later split the libsocket code into two versions in my CVS repository - 0.7.4 will be Windows-only and 0.7.5 will have the added DOS support.

Happy New Year!


24th November 1999

I've just released patch 1 for libsocket 0.7.4 beta 3. This fixes problems with the assembly code that people have experienced with the gcc 2.95.x compilers. Instructions for applying the patch are included in the file - you will, of course, need GNU patch.

There also seems to be an issue with the pragmas used by the name resolving code. I will look into this - it shouldn't affect libsocket adversely.


31st October 1999

I've just installed the Bugzilla bug-tracking system from Mozilla. You can view the status of any bugs in libsocket at the libsocket Development Home Page. If you find any bugs or suspicious behaviour, especially in the Winsock 2 support, please e-mail me.


24th October 1999

I've just released a new 1999-07-22 source snapshot patch, patch 5, at the libsocket Development Home Page. This fixes some more bugs in datagram support and includes some other small changes.

I haven't been able to much development until this weekend, unfortunately, due to my computer being given a complete overhaul. Things are approaching normality and I hope to get more done. Hopefully I'll get a new snapshot out sometime in the next fortnight, followed by a new beta if things are going well.


19th September 1999

I've just released a new 1999-07-22 source snapshot patch, patch 4, at the libsocket Development Home Page. This fixes the bugs I introduced into the handling of datagram sockets by csock in an earlier patch. It also fixes problems with configuring the DNS servers, a clash between resolv.conf and lsck.cfg.

If you're using this source snapshot, apply all the patches *now*. Otherwise libsocket will not be able to do DNS look-ups because of the datagram bugs.


28th August 1999

I've been a bit slack updating the news page recently. There's a patch out for the last source snapshot at the libsocket Development Page (see below). I haven't had much time to work on libsocket recently, because I've been on holiday and I've just started working. Due to my lack of time, I've sent a plea for helpers to the DJGPP newsgroup & libsocket list:

Recently I came very close to deciding to end development on libsocket. It
hasn't exactly been proceeding at a fast pace in recent months and it
feels like libsocket is about to die. Basically I do not have enough to do
all that I want on libsocket - coding, testing, documenting, etc. So I
plead for help with libsocket in any form. I appreciate greatly the help
given so far, but I think more people need to get involved. If you are
interested, please reply by e-mail.

I think the message says it all really. I've also just updated the links page with some new socket programming links. There are some good documents out there that I just discovered, particularly the original BSD manuals. Since libsocket is a BSD socket library, I guess this provides a good description of what it should do ;)


22nd July 1999

I've just release a new source snapshot at the libsocket Development Page. Only download this if you need a cutting edge version of libsocket or are just curious ;)

Hopefully I'll get the 0.8.0 release of libsocket out sometime in the near future. It'll probably be August, so don't hold your breath!


30th June 1999

It's been a while since I've updated this page. Sorry about that. Current news:

  • There is now a libsocket Development Home Page for those interested in libsocket's internals or development snapshots.

  • I have removed my Geocities web page because of Yahoo!/Geocities recent change in terms of service, which I object to. I don't like the implications for my intellectual property, so I've moved my home pages to Freeserve, my ISP. Anyhow, libsocket's home page is here:


  • I'm going to release one more development snapshot before working on libsocket 0.8.0. It's time for a new release of libsocket, rather than beta test versions.


6th May 1999

libsocket 0.7.4 beta 3 is out - see the download page. Here is the log of changes over beta 2:

- Fixed some of the debugging messages in src/inet/ghstnmad.c,
  src/inet/r_init.c, src/csock/c_initnt.c.

- Man pages now go in man/ off the DJGPP directory, not in share/man/ as

- Fixed bug in sys/socket.h, which meant that u_int was undefined when using
  SO_DONTLINGER. sys/socket.h now includes lsck/bsdtypes.h too, to define

- Fixed bug in src/initnt.c where csock interface was not uninitialised.

- Fixed bug in src/fcntl.c that meant the logical NOT of the true value would
  be obtained doing e.g. fcntl(sock, F_GETFL, O_NONBLOCK).

- Added Unix domain socket support. THIS IS IN AN ALPHA TEST STATE. It's
  extremely buggy.

- Removed nasty hack that sets protocol number when a protocol of 0 is used.
  Now a nice mapping table is used.

- Fixed bug in src/csock/c_recv.c in __csock_recvfrom(). It should now return
  the address correctly. Also, it should work if the 'from' parameters is NULL.

- Fixed bug in src/wsock/w_recv.c which always returned the address, even if
  the 'from' parameter were NULL.

- Added support for FIONREAD with ioctl() for Winsock 1.x module (wsock).

- Fixed src/csock/c_select.c functions __csock_select(), __csock_select_wait()
  so they actually work properly.

- Added POSIX function isfdtype(). However, necessary includes are in
  sys/socket.h rather than sys/stat.h.

- Added fcntl() support for csock interface.

- Fixed bugs in non-blocking ioctl FIONBIO for both wsock & csock.

- Moved to an interface descriptor, so that the BSD calls now do not need to
  know the internals of each interface in *any* way. The interface descriptor
  also includes address and routing tables. The code was updated to build the
  address tables correctly for each IP address, including the loopback

- Fixed problem with select() on socket that lead to select'ing for reading
  always succeeded if the socket was ready for writing.

- Source code reorganisation:
    . src/wsock/win311    -> src/win3x
    . src/wsock/win95     -> src/win9x
    . src/wsock/win95/*.c -> src/win9x/w9x_*.c (some names altered)

- Discovered that the Linux ioctls added were actually BSD-ish, so renamed
  demo/linioctl.c to demo/ioctl.c. The refs in the man pages have also been

- accept() & closesocket() memory leaks fixed.

- connect() fixed for non-blocking operation.

- getsockopt() for wsock interface (src/wsock/w_sckopt.c) now converts errors
  returned by SO_ERROR from Winsock to BSD errors.

- Debugging output can now be enabled/disabled with a function call or the
  'debug' key in the 'main' section of the configuration file.

I won't be able to work on libsocket for a while, so don't expect any major updates for a while.


8th April 1999

Added libsocket to the DJGPP WebRing.


7th April 1999


I have found a problem with the top-level Makefiles. If you do not have GNU textutils installed, then make will fail! The Makefile's use of GNU textutils is trivial - it uses cat to display a file. This can be fixed by replacing all occurences of 'cat' in Makefile.src and Makefile.bin with:

	command /c type


There have been some problems in setting up automatic mirroring from my Internet account, so the Geocities page will remain.


21st March 1999


Some people have reported not being able to compile the beta 2 of version 0.7.4 because make cannot find the Makefile. You have to tell make to use the source Makefile, Makefile.src, like so:

	make -f Makefile.src

The reason I have included two Makefiles is so that they can both be tested. I'm sorry if this is confusing.


I have decided to abandon the Brazilian mirror as I do not have time to keep it up-to-date. I have also decided to move the libsocket home page from my Geocities page to my Internet account. I will update the forwarding page http://libsocket.tsx.org/ accordingly.

Progress Report

Currently I'm working on adding Unix domain socket support (AF_UNIX) to libsocket by using LAN Manager mailslots. This is so that GNU inetutils can be ported to DJGPP. I also hope to improve the Winsock 2 support.


28th February 1999

Winsock 2 support at last!

I have the second beta release of version 0.7.4 ready. Please check the Changelog for details of the new version. Then proceed to the download page.

Here's a copy of the announcement file explaining its purpose:


    I'd like to announce the second beta of libsocket 0.7.4, a BSD-style
socket library for DJGPP.

    This beta release is a landmark for libsocket. libsocket finally has
Winsock 2 support! So, it should now work on all versions of Windows other
than Windows NT. The Winsock 2 support isn't as complete as the Winsock 1.x

    Credit for the Winsock 2 support must go to Michael Callahan and the Coda
network filesystem project, as they have provided the device driver that
allows libsocket to work with Winsock 2.

    Also fixed in the Winsock 1.x interface are:

- Auto-configuration with DHCP
- select() bugs final fixed (again)

Generally it seems more stable. See the home page for the full list.

    I'm beta testing this before the final release, because I need to make
some small changes and there are probably still some bugs ;)

    You should download this beta if:

- You are interested in hacking/contributing to libsocket.
- You have problems with version 0.7.3.
- You like the cutting-edge feel of beta programs.

    The beta is available from the libsocket home page at:


    If you have any questions relating to libsocket, please mail me and I'll
be happy to help.


    Richard Dawe

    February 28th 1998

I've found a new forwarding Web address for libsocket, to replace the old Monolith one. Here it is:


Thanks to tsx.org for providing it for free.


12th February 1999

I recently found out that Monolith do not support the home.ml.org forwarding service anymore, so the address http://libsocket.home.ml.org/ no longer works. Sorry about the inconvenience. They cite technical difficulties as the reason for this. The libsocket home page's address is:


I've also updated the downloads page. Hopefully all the mirrors will also now be up-to-date.


4th February 1999

Finally I have a beta release of version 0.7.4 ready. Please check the Changelog for details of the new version. Then proceed to the download page.

Here's a copy of the announcement file explaining its purpose:


    I'd like to announce the first beta of libsocket 0.7.4, a BSD-style
socket library for DJGPP.  This beta release has been a long time coming,
and has a few improvements:

- Auto-configuration with DHCP
- Standard include files
- select() bugs final fixed
- More man pages
- Some Linux ioctl() support

Generally it seems more stable. See the home page for the full list.

    I'm beta testing this before the final release, because I need to make
a couple of non-major changes and there are probably still some bugs ;) It
shouldn't change much before the final release though.

    You should download this beta if:

- You are interested in hacking/contributing to libsocket.
- You have problems with version 0.7.3.
- You like the cutting-edge feel of beta programs.

    The beta is available from the libsocket home page at:


    If you have any questions relating to libsocket, please mail me and
I'll be happy to help.


    Richard Dawe

    February 4th 1998


18th December 1998


I haven't managed to uploaded all the files to the Estonian mirror yet. Please be patient & sorry for the inconvenience.

Progress Report

I mentioned in 8th December about the TCP ABI. Unfortunately, it appears (after some coding) that the TCP ABI drivers are not stable. I have tried them on two different computers, and the TCP ABI drivers didn't work. In fact, they appear to cause protection faults, since one of the computers crashed with EMM386 reporting exception 1.

Unfortunately, I think I will have to abandon the TCP ABI drivers as a way of providing DOS support. This is a shame, as the coding was going nicely.

So, it looks as if packet drivers are still the best way of providing DOS support. I will invesigate this sometime again when I have time. In fact, the next version of libsocket (hopefully out soon) should make it easier for other people to add code to the library, as it's more modular. So, if anyone fancies the challenge of adding packet driver code when it is released, please feel free.


8th December 1998


I have updated the links on the download page for the new Estonian mirror. Thanks to Indrek Mandre (the original libsocket maintainer!) for providing the mirror.

Progress Report

In my earlier news on the 7th November 1998, I mentioned that I was making progress with the DOS version. Unfortunately, I could not get the packet driver support working properly, so I decided to abandon it. I am trying an alternative solution using the TCP Application Binary Interface (TCP ABI), which runs on top of packet drivers. This should be much simpler (i.e. quicker) to code, and I hope to have some code ready soon.

It looks like support for all versions of Windows, including Windows NT, can be added too. Using mailslots and a Windows helper application, it may possible to circumvent the problems with Winsock 2.

7th November 1998


I am making available a patch for the standard C library, libc, that adds socket error messages. This will stop error messages of the form "Unknown error:" appearing when using perror() or strerror(). This may not be necessary with DJGPP 2.02. The patch may also fix problems with select(), but this is unconfirmed. The patch comes with a README file and installs/uninstalls easily.

Download libcfix.zip (10.7K)


I also updated the links on the download page for the new Brazilian mirror. Thanks to Alex Fiori for providing the mirror at uground.org.

Progress Report

I am making slow progress on version 0.7.4. I am working on getting DOS support working. I hope to release an alpha version sometime before Christmas, so that the many bugs can be eliminated before a proper release. It should support ICMP, UDP and TCP over IP, using packet drivers. Thanks to Ove Kaaven for providing me with the basic networking code.

Dan Hedlund, the author of the WSOCK C++ socket library, is working on Winsock 2 support for WSOCK. Once he has succeeded in making WSOCK work with Winsock 2, I may be able to add Winsock 2 support to libsocket. If not, then I may be able to add support some other way. It may even be possible to get libsocket working under NT!


I'd like to thank all those people who have made suggestions, provided information and generally encouraged me via e-mail. I hope I can implement many of the suggestions eventually - please be patient.

If you are using libsocket in a project, please e-mail me. I'd like to make a page to link to all the projects using libsocket.

I've also set up a libsocket mailing list at onelist.com. I intend to use the list for announcing new alpha versions, dicussing bugs, etc., but anyone can post to it or read it. It will also be archived, which should be useful.


18th August 1998

Release of version 0.7.3.

I have tested this version more throughly than previous versions, so hopefully I've caught more bugs. Please see the changelog for version 0.7.3 for details of the updates.


15th July 1998

Some people have informed of a problem with libsocket where error messages like:

	Nameserver: [(null)]

are obtained. This is due to a really stupid bug of mine in the resolver code. Sorry.

The problem can be fixed easily in the source, if you have the source distribution. In the files:


change all occurrences of "!access" to "access". The resolver should now work correctly.

The patches to the two distributions can be downloaded below. Please note that I have updated the archives, so any new downloads already have the fixed binaries / sources.

DescriptionContainsDownload URL
Binary distribution patch New library libsocke.a lsck072b-patch.zip
Source distribution patch Resolver source updates (see above) lsck072s-patch.zip

As a side note, I am making progress on libsocket 0.7.3, which should be out (hopefully) in 2-4 weeks. There haven't been many changes yet - I've been restructuring the library so I can incorporate packet driver support for DOS networking. The packet driver support will probably be in a later version though. Also, I should finally be able to test the library with a dial-up link.

Thanks to those who have offered support and encouragement for libsocket. I just hope it works for you ;)


18th June 1998

While preparing libsocket for distribution via the DJGPP archive, I fixed a couple of things:

  • Some unnecessary files have been removed from the binary distribution - contrib\lsck072b\misc\man2html\* - they were only needed in the source distribution.

  • The library also uses contrib\lsck072 now, instead of contrib\lsck072b or contrib\lsck072s.

  • Some minor bugs were fixed in accept(), socket() and getdomainname(). socket() will now return -1 when it doesn't have enough memory to create a socket, rather than a file descriptor (as it did before).

Apologies to those who tried to download libsocket, but were prevented as the ZIP files were corrupted. Please look at the libsocket Download page to download the new versions.


The layout of this page is by Indrek Mandre, and the content is by Richard Dawe.

[Previous] [Top] [Next]