[Introduction] [Using the List] [Software from Discussions on the List] [Relevant Links]
Once upon a time there was a mailing list called "dossock" that discussed how to enable DOS programs running under Windows to use Windows's networking facilities via a virtual device driver (VxD) called WSOCK.VXD. This was an interesting topic, and the list was found to be useful. Unfortunately this list was struck by bad luck and died a quiet death. However, now it has been reincarnated in a new form (with archives).
My intention is that this list discusses everything the old one did (see above), and hopefully it will broaden to discuss more than just access via WSOCK.VXD, e.g. access via WSOCK2.VXD, under plain DOS, NT, etc.
The mailing list is kindly being hosted by Yahoo! Groups (formerly eGroups). You can join the mailing list using the following link:
Once you have joined the list, send mail to list via dossock@yahoogroups.com. If you have not joined the list, your mail will be rejected.
This is roughly in chronological order.
QBWSOCK - (by Richard Dawe) - Interface to Windows's WSOCK.VXD networking virtual device driver (see links below) for QuickBASIC 4.5. This is highly experimental and doesn't actually work right now. It comprises of QuickBASIC 4.5 and NASM 0.97 (or later) assembly source code. It's distributed under the terms of the GNU Library General Public License. The latest version is QBWSOCK (1999-05-13) (16K).
NB: someone42 has produced WSOCKXS, which allows QuickBASIC programs to access Winsock by using WSOCK2.VXD. WSOCKXS is not be QuickBASIC-specific, but all the examples are in QuickBASIC.
WSOCKVDD - WSOCK.VXD Emulation for Windows NT - (by Berczi Gabor) - This is a Virtual Device Driver (VDD) for Windows NT. It emulates the interface provided by WSOCK.VXD. You load, unload and call it as you would WSOCK.VXD. It's distributed under the terms of the GNU General Public License. See the page above for more details.
Modified SOCK.VXD sources - (by Richard Dawe) - I tried to fix some of the bugs in SOCK.VXD from the Coda network filesystem port to Windows. Here is a dump of my sources and an incomprehensible readme file.
Pascal interface to the Virtual Sockets Library - (by Berczi Gabor) - announcement, vslsocks Pascal sources
VSL is a commercial product by JSB. See their VSL documentation An excerpt describes VSL like so:
"The Virtual Socket Library is a single socket style API which provides transport and platform independent (TPI) development. By writting to the single VSL API, the developer is provided with complete connectivity over TCP/IP (all legacy and winsock stacks), DECnet, and IPX/SPX; this is offered on multiple platforms including Windows, Windows NT, DOS."
(Excerpt from http://www.mpassociates.gr/software/catalog/prog/lans.html.)
As Gabor described it: "This is a generic BSD-sockets compatible interface, which isn't a protocol stack itself, but provides an easy way to use different protocol stacks - like BWTCP, PC/TCP, Microsoft TCP/IP, Novell TCP/IP, DEC Pathworks, and even IPX/SPX and WinSock - from your DOS programs."
ws2dos - Winsock 2 interface for DOS programs - (by Berczi Gabor) - Finally, the WSOCK2.VXD interface is understood! Here are Gabor's explanation of WSOCK2.VXD's interface and Pascal unit to interface to WSOCK.VXD.
Free Sockets Interface - (by Berczi Gabor) - This is a BSD-sockets compatible interface for Pascal programs. It supports a lot of socket interfaces: Trumpet ABI, Novell IPX, Microsoft LAN Manager, Novell TCP/IP, PC/TCP, VSL (see above), Waterloo TCP (FTP software packet driver standard), Winsock 1.x and 2 VxDs. NetBIOS is not yet supported by the sockets interface, but the included NB30 unit interfaces to NetBIOS. All in all, an impressive piece of work.
WSOCKXS - (by someone42) - As someone42 describes it in the readme file: "WSOCKXS is a VxD and a 32-bit application which allow access to Winsock level TCP/IP routines. This means that, from a dos box most internet programming can be done (ie. HTTP, FTP, POP3 etc) as well as things such as implementing TCP/IP in games. I originally made this program for Qbasic, so the program is heavily Qbasic-orientated."
Thanks & respect go out to all those who have contributed.
Please mail me any useful links you have on this subject. The libsocket links page also has some interesting links on it.
Dan Hedlund's WSOCK library - The first library that used WSOCK.VXD. Most other libraries are based on it. This is written in C++, assembly for DJGPP.
libsocket - This library is based on DH's WSOCK library, but provides a BSD-socket C interface. This is written in C, assembly for DJGPP.
WATTCP - Waterloo TCP/IP is a C library that uses packet drivers (see below).
Watt-32 - This library is based on the Waterloo TCP/IP stack (WATTCP), but has been extended in many areas. It works with many C compilers for DOS.
PDTstNet - This is a small UDP/IP stack. Here's Federico Bianchi's description: "if you just need UDP/IP, the stack in this useful small program is a real gem. Its programming interface is not for the faint of heart, but it's blazingly fast, rock-solid and uses few resources, making it viable for ROM-based solutions. No TCP, though, and you must be prepared to work in good'ol'TASM to make use of it."
TinyTCP - Here's Federico Bianchi's description: "I found this thing with ELKS, the 16-bit Linux sibling. The stack itself was (according to the documentation) used in embedded Z80 and M68k environments in the early 80s, and it's mostly coded in a C subset. It is nicely laid out, and with a lot of work it might evolve into a very nice, non-O/S dependent network stack. Again, its API is not the easiest I've come across with (maybe because of my sockets background), but nevertheless I do like it."
PC/TCP home page - This was formerly sold by FTP Software. FTP Software is now a subsiduary of NetManage. Sadly it has been reported that the PC/TCP SDK is only available to existing customers.
Async Systems - They produce a sockets SDK for DOS, which is billed as 4.3BSD compliant. The SDK can be downloaded for a trial.
Code from EtherBoot or NetBoot could be used as a basis for a networking library.
KA9Q - This is another free library, with a DJGPP port.
lwIP - Here is a description of lwIP from the lwIP home page:
"lwIP is a small independent implementation of the TCP/IP protocol suite that has been developed by Adam Dunkels at the Computer and Networks Architectures lab at the Swedish Institute of Computer Science as part of the Connected project.
The focus of the lwIP TCP/IP implementation is to reduce the RAM usage while still having a full scale TCP. This makes lwIP suitable for use in embedded systems with tenths of kilobytes of free RAM and room for around 40 kilobytes of code ROM."
Florian Schulze is working on a port of lwIP to DJGPP, which is available here: lwipdjgpptest-0.1.zip. If this file disappears, it may be worth looking here: http://homepages.fh-giessen.de/~hg10836/dev/djgpp/.
libtso - (by Cyrus Patel) - announcement, origins, libtso sources, BSD sockets superstructure for libtso
libtso is a rewrite of TinyTCP. Here are some of its main features according to the author, paraphrased by me (Richard Dawe):
WSOCK.VXD Pseudo-Documentation - This is a document for WSOCK.VXD I wrote based on libsocket's source code. It is incomplete.
CSOCK.VXD Pseudo-Documentation - This is a document about SOCK.VXD, a Windows virtual device driver written for the Coda network filesystem port to Win95. This can provide access to Winsock from a DOS box & is GPL'd.
TCP Application Binary Interface (TCP ABI) is a standard for TCP, UDP and IP programming interfaces for DOS programs developed by Trumpet Software. The TCP ABI has been implemented as a TSR running on top of packet drivers, but could be implemented another way. The TCP ABI Specification 2.01 describes the functionality available. You may also want to look at Trumpet's home page and their unsupported DOS section.
Crynwr provides a collection of packet drivers for DOS. This is a de-facto DOS networking standard made by FTP Software. The Packet Driver Interface specification can be downloaded from the Internet for free. Most non-trivial DOS networking applications use packet drivers.
Dank's page has a lot of information on packet drivers.
"Getting IP data from numerous sources" - This document was written by Alfons Hoogervorst. It documents how to obtain various pieces of IP data, when running under Windows.
"Where IP Data is Stored for Network Cards under Windows" - This document explains how to obtain IP data from the Windows registry for statically and dynamically assigned addresses.