This is a hypertext version of the Foreword for the text Windows Sockets Network Programming, by Bob Quinn and Dave Shute.
In 1991 it was becoming apparent that Microsoft Windows was going to play a definitive role in the future of desktop computing. At the same time, if you listened closely, you could here the first rumblings of the earth-shaking impact TCP/IP was going to have on the lives of many people. At the intersection of Microsoft Windows and TCP/IP, however, lay a problem. All the vendors of TCP/IP products for PCs had produced different programming interfaces for their own products. I was one of many programmers around the world sitting at my PC late at night telling myself there must be a better way.
That "better way" got started at a BOF ("Birds of a Feather") session at Interop in October 1991. In a room containing 30 or so of the brightest minds in the industry, the idea of creating a single, standard transport interface took shape. The key criteria were to keep it as close to the existing Berkeley Sockets API as possible and not to require a shoe horn to use the interface in a Windows message-based application. It's often tempting for technical people to want to do a perfect job and include everything in a technical design. One key decision we made as a group was to limit what we included in the interface to what the majority of programmers needed. Combined with the energy and willingness of competitive vendors to work together, this laid the foundation for the creation and success of the Windows Sockets API, or "WinSock" as it has become known.
Over the next 15 months, many people on the WinSock mailing list contributed to the development of the preliminary specification. Several interoperability sessions (WinSockathons) took place, and the result of this cooperative effort was the Windows Sockets version 1.1 API specification.
WinSock lies right at the heart of the explosion of interest in developing and using communications applications on Microsoft Windows PCs. The global community of developers who cooperated to define this programming standard is being joined by other programmers from all over the world who want to add communications capabilities to their software applications by using WinSock. In short, WinSock has become hugely popular and has been badly in need of a great book. Until now.
I'm honored to have been asked to write the foreword to this book. It fills a gaping hole by providing developers with the contextual framework and information detail needed to develop high-quality WinSock software. Whether you are new to WinSock or consider yourself a WinSock expert, you will learn things from this book. Bob and Dave draw on extensive, solid, pragmatic experience with WinSock. They give you an illuminating guided tour of what you need to know to develop robust WinSock-based software. In the same spirit of pragmatism exhibited by the WinSock Group, Bob and Dave have empathized with programmers in constructing this book. The first few chapters provide a solid background and framework within which to understand the details of WinSock, how it can best be used and exploited relative to your own programming requirements. For writing WinSock clients, servers, or intermediary DLL components, the following chapters are well structured and provide exactly the right level of detail and accessibility. Finally, as WinSock continues to thrive and progress, knowing where to go to get yet more information is important, so the appendices include pointers to other information sources.
Bob Quinn and Dave Shute have been immersed in WinSock since the beginning. They know it outside in, inside out and probably dream about it in their sleep. I applaud them for their dreams and their efforts and wholeheartedly recommend this book.
WinSock Group Chairman
CTO, Stardust Technologies, Inc