A Guide to Windows Sockets 1 June 1993 Martin Hall, JSB Corporation (martinh@jsbus.com) INTRODUCTION The Windows Sockets specification defines a standard, open network programming interface for Microsoft Windows and Windows NT2 which is based on the "socket" paradigm popularized in the Berkeley Software Distribution (BSD) from the University of California at Berkeley. It includes both familiar Berkeley socket style routines and a set of Windows-specific extensions for further integration with the message-driven Windows environment. This document is intended to act as a general information guide to all aspects of Windows Sockets. Anyone who needs an introduction to and orientation in Windows Sockets should find it useful. It will be updated on an irregular basis. You should use the date on this document as a reference point. This is a living document. Any suggestions for additions to this document are welcome. Additionally, you should refer to the definitive Windows Sockets Version 1.1. specification dated January 20 1993 for detailed technical information. Thanks to Dave Treadwell, J Allard and Mark Towfiq for their help in preparing this guide. HISTORY Windows Sockets grew out of a confluence of interests and technologies. The burgeoning success of Microsoft Windows, the continuing growth in the prevalence and significance of TCP/IP networking and the corporate requirement for open software standards, all came together to create an environment which was ready and waiting for the Windows Sockets standard. JSB's creation of a normalized sockets interface in their Virtual Socket Library together with NetManage's efforts to extend Berkeley Sockets in a Windows environment provided the catalyst for Windows Sockets. The idea for Windows Sockets was first proposed by JSB's Martin Hall at a Birds Of a Feather session at Fall Interop in San Jose in September 1991. Around 40 companies were formative members of the Windows Sockets group. Representatives from these companies gathered in Seattle in December 1991 to debate and resolve the basis of Windows Sockets. Considerable effort between then and January 1993, which involved a substantial amount of Internet-based email discussion, together with several meetings and 2 interoperability testing sessions (WinSockathons) led to version 1.1 of the Windows Sockets specification which is the definitive reference point for Windows Sockets today. WinSockathon II proved that Windows Sockets 1.1 is a viable standard for application/network implementation interoperability. WINDOWS SOCKETS STATUS Currently, Windows Sockets version 1.1 serves as the authoritative, complete version of the Windows Sockets API for the TCP/IP protocol family. Published on January 20 1993, this serves as the official document for implementers and applications developers to follow during development. Windows Sockets is presently in a period of consolidation allowing version 1.1 to stabilize. It is anticipated that this consolidation period will run until the end of 1993. This allows implementers, applications developers, and end-users to develop, consolidate and leverage this exciting technology. As minor problems and inconsistencies in the published version of the 1.1 specification may exist, an "annex" will be maintained documenting and clarifying any such issues. The annex will not incorporate any new functionality or features not documented in the published version of the 1.1 specification. Clarifications and corrections made in the annex will be rolled into the next version of the specification, removing the need to maintain the annex further. WINDOWS SOCKETS AND INDEPENDENT SOFTWARE VENDORS (ISVs) Although coupled tightly with Microsoft's Windows operating system, the Windows Sockets specification is not owned by Microsoft Corporation. It is instead an independent specification created and developed through the cooperation of several software vendors. Many software vendors and corporations are using the Windows Sockets specification to create 1. Windows Sockets compliant programming interfaces for network transport implementations 2. Windows Sockets compatible applications i.e. applications capable of running over ANY Windows Sockets compatible implementation. For details of Windows Sockets implementations and Windows Sockets compatible applications see the appendices to this document. CHARTER The charter of the Windows Sockets group is to develop an open standard for network programming on Microsoft Windows. Any interested parties, including (but not limited to) vendors, researchers, and individuals are welcome to join the effort. THE WINDOWS SOCKETS GROUP Acting Officers The acting officers of the Windows Sockets committee are: Martin Hall Moderator JSB Corporation Mark Towfiq Coordinator Microdyne Corporation David Treadwell Editor 1.1, Addendum Microsoft Corporation Geoff Arnold Editor 1.0 Sun Microsystems Henry Sanders Microsoft Corporation These officers were nominated at the "Birds Of a Feather" (BOF) session held at Interop Fall in '91, or volunteered as work items were generated. Group The success of Windows Sockets would not have been possible without the creativity, energy and contribution of many other people and organizations. The Windows Sockets group continues to thrive and debate issues on the mailing list and newsgroup. HOW TO GET INVOLVED Mailing List A Windows Sockets electronic mailing list is maintained for technical discussions of the Windows Sockets specification and for announcements of the availability of new versions of Windows Sockets products, and of the specifications themselves. The list is maintained by Mark Towfiq at Microdyne. To subscribe, e-mail winsock-request@microdyne.com. To send mail to the list, e-mail winsock@microdyne.com. The list is not moderated. It is suggested that you use signatures at the end of your messages, as some mailers do not decode the headers to distinguish the initial sender of a given message. Please note that product announcements are unwelcome on the Windows Sockets mailing list. A special mailing list has been set up for product announcements: winsock-announce@microdyne.com. Newsgroup The mailing list winsock@microdyne.com is gatewayed to the USENET newsgroup alt.winsock. This provides an alternative interface to those wishing to discuss Windows Sockets. CONTRIBUTING AND RETRIEVING WINDOWS SOCKETS MATERIALS FTP Sites The Windows Sockets specification, in a variety of forms, along with public domain and sample software, press releases and miscellaneous other components is available from the following anonymous FTP sites: microdyne.com: /pub/winsock vax.ftp.com: /pub/winsock SunSite.UNC.EDU /pub/micro/pc-stuff/ms-windows/winsock rhino.microsoft.com winsock MEETINGS The Windows Sockets group meets irregularly to further the specification. Such activities are usually focused around a new version of the specification. If you wish to participate in such meetings which not only take place on an ad hoc basis but also occur in different places, then please make sure you either subscribe to the mailing list or watch the newsgroup. INTEROPERABILITY TESTING FORUMS - WINSOCKATHON In 1992 and 1993 Sun Microsystems was kind enough to offer their facilities twice to host Windows Sockets interoperability testing, colloquially known as WinSockathon I and WinSockathon II. These get-togethers are extremely valuable as application vendors and implementers can determine and resolve problems with their code and with the specification in a timely and efficient fashion. These are also the events where treasured mementos such as the Windows Sockets baseball cap infrequently materialize. If you are interested in participating in these events please subscribe to the mailing list or newsgroup. WINDOWS SOCKETS COMPLIANCE The issue of conformance to the Windows Sockets specification by both Windows Sockets implementations and Windows Sockets applications is currently under discussion. Windows Sockets is being specified increasingly as a required standard in corporate network computing environments. This and the widespread acceptance of Windows Sockets leads to the need for a more formal validation process for Windows Sockets compatible applications and Windows Sockets compliant network implementations. It is hoped that progress can be made on this front in the near future. Applications capable of running with Windows Sockets implementations are referred to as "Windows Sockets compatible". Windows Sockets implementations which conform to the Windows Sockets specification are known as "Windows Sockets Compliant". Although not an official validation or certification tool, as an aid to Windows Sockets implementers, Microsoft has developed the Windows Sockets API Tester (or WSAT) and offers it free of charge to implementers of Windows Sockets Dynamic Link Libraries (DLLs). The tester provides both standalone and client-server test scenarios covering the entire Windows Sockets specification. It is currently available in beta form by e-mailing wsat@microsoft.com (to which comments and questions should also be directed). When completed, WSAT will be made available on the anonymous FTP sites as well. WINDOWS SOCKETS MARKETING ACTIVITIES Windows Sockets Forums From time to time, Windows Sockets marketing activities take place. Although largely a technical group, the ongoing success and prevalence of Windows Sockets does bear some relation to the amount of publicity it receives. To this end, press releases are compiled for significant Windows Sockets occasions such as the release of a new specification. Individual vendors have, to date, produced various Windows Sockets "profile raisers" such as the baseball cap and computer toppers. Various people are regularly involved in giving presentations on Windows Sockets, moderating panels and so on. We are currently exploring the idea of a "Windows Sockets Showcase", possibly for Interop Fall '93. All parties interested in participating this event should contact Dan Reis at JSB Corporation (Tel: 408 438-8300, Email: danr@jsbus.com). Windows Sockets Implementations and Applications List It is beneficial to have marketing contact points for Windows Sockets vendors (network and application vendors). If you are interested in having your company name included in the list of Windows Sockets implementations or applications incorporated in the appendices of this document and also used in other miscellaneous places, please supply appropriate product information together with a contact name, telephone number and address to Martin Hall at JSB Corporation (Tel: 408 438-8300, Email: martinh@jsbus.com). A supplementary mailing list is now available for product announcements. The list is: winsock-announce@microdyne.com. This should be used to announce the availability of Windows Sockets implementations, applications and related products. USEFUL WINDOWS SOCKETS PUBLICATIONS You may find any or all of the following Windows Sockets publications useful. Windows Sockets: An Open Interface for Network Programming under Microsoft Windows, Martin Hall, Mark Towfiq, Geoff Arnold, David Treadwell, Henry Sanders. The definitive specification, this is available from various sources including ftp sites detailed above. Published January 20 1993. Plugging into TCP/IP with Windows Sockets, Victor Volkman. Windows/DOS Developer's Journal. Vol. 3, No. 12 December 1992 Untangling the Windows Sockets API, Mike Calbaum, Frank Porcaro, Mark Ruegsegger, Bruce Backman. Dr. Dobb's Journal #197 February 1993. The Windows Sockets API, Ralph Davis. Chapter 6 in "Windows Network Programming". From "The Andrew Schulman Programming Series". Addison-Wesley Publishing Company 1993 Windows Sockets - Get Plugged in to Serious Network Programming, J Allard , Keith Moore, David Treadwell,. Microsoft Systems Journal (forthcoming) WINDOWS SOCKETS FUTURE Windows Sockets has come a long way in a short period of time. In just 18 months, we've published a great specification, and have seen successful integration of applications over many different implementations. Although the remainder of 1993 will be intentionally slow in terms of additions to the specification for stability sake, we encourage people to begin thinking about what they'd like to see in future versions of Windows Sockets. Over the next few months, the acting officers will be compiling a list of issues for consideration in the next revision of the specification. Once we get a fair level of agreement, the group will launch into proposals and technical discussions full-steam. Current wish list items include: SYMBOL 109 \f "ZapfDingbats" Transport independence SYMBOL 109 \f "ZapfDingbats" Sharing of socket descriptors between processes SYMBOL 109 \f "ZapfDingbats" Mechanism for available host name collection Appendix A. WINDOWS SOCKETS IMPLEMENTATIONS The following companies provide Windows Sockets implementations. Please contact the company for details of current availability. Vendor & Contact Product Name Product Description 3Com Corporation 5400 Bayfront Plaza, PO Box 58145 Santa Clara, CA 95052-8145 3Com TCP with Demand Protocol Architecture version 2.1 A versatile TCP/IP connectivity product which offers DOS and Windows users terminal emulation (DEC & IBM) and file transfer applications, as well as the most widely used API's on which to run your favorite applications (BAPI for DOS & Win, DOS Sockets, & Windows Sockets).  Beame & Whiteside PO Box 8130 Dundas, Ontario Canada L9H 5E7 Contact: Sales 416 765 0822 sales@bws.com BW-TCP BW-NFS TCP/IP & NFS implementatons including Windows Sockets support.  Brad Wilson 914 Douglas, Suite #1 Mt. Pleasant, Michigan 48859 517 773-1553 TCPMaster A free Windows Sockets v1.1 over Ethernet, SLIP and PPP  Distinct Corporation 14395 Saratoga Avenue Saratoga, CA 95070 Contact: sales 408 741 0781 phone 408 741 0795 fax mktg@distinct.com Distinct TCP/IP for Windows Essex Systems, Inc. One Central Street Middleton, MA 01949 Contact: Dan Lanciani (508) 750-6200 TCP/2-DOS The TCP/2-DOS stack is a protected-mode implementation of Berkeley sockets for DOS and Windows, running as a virtual device in Windows 386 enhanced mode.  Firefox Communications Ltd, Cranmore House Cranmore Boulevard Solihull, West Midlands. United Kingdom. B90 4RX. Contact: Victor Woodward. (+44) 21 609 6090 Firefox Inc P.O. Box 8265 Kirkland, WA 98034-0165 USA (206) 827-9066 NOVIX II Gatewayed access to TCP/IP via IPX/SPX LAN through TCP/IP stack provided as an NLM on a netware server.  FTP Software, Inc. 2 High Street North Andover, MA 01845 (508) 685-3300 info@ftp.com PC/TCP Network Software for DOS/Windows Frontier Technologies 10201 N. Port Washington Rd. Mequon, WI 53092 414-241-4555 Contact: Ray Langford tcptech@frontiertech.com Super-TCP/NFS for Windows TCP/IP connectivity package includes MIME Email, NFS Client/Server, FTP/TFTP Client/Server, VT320, tn3270, News Reader, LPR Client, Talk, Remote Protocols.  IBM IBM Corp. PO Box 12195 Atten: Pat Coyle G90A/503 D109 RTP, N.C. 27709 Contact: Patricia (Pat) Coyle (919) 254-6531 pacoyle@ralvmm.vnet.ibm.com IBM TCP/IP V2.1 for DOS IBM TCP/IP V2.1 for DOS, runs in extended memory as a DOS TSR supporting BSD real mode sockets as well as Windows Sockets API 1.1  JSB Corporation 108 Whispering Pines Drive Scotts Valley, CA 95066 Contact: Dan Reis 408 438-8300 danr@jsbus.com Virtual Socket Library for Windows Provides Windows Sockets API for over 25 existing PC TCP/IP product versions.  Lan Design P.O. Box 506 Wendywood 2144 South Africa Tel: (11) 444 1050Contact: Neill Rosenthal 100100.23@compuserve.com INET for Windows TCP/IP suite fully implemented for Windows 3.1 including .DLL kernel with routing capabilities using DOS TSR Packet drivers, Telnet VT and 3278, FTP client and server, print client and server and WINSOCK.DLL.  Lanera Corp Lanera Corporation 516 Valley Way Milpitas, CA 95035 408-956-8344 Contact: Peter Pham Internet: lanera@netcom.com TCPOpen TCP/IP for DOS/Windows with NDIS, ODI, Packet driver interface, Dial-up SLIP upto 38.2 Kbps, Token Ring/Ethernet, NFS  Microsoft (Windows NT 32-bit) One Microsoft Way Redmond, WA 98112 206-882-8080 Contact: J Allard Windows/NT 3.1 and Microsoft Windows NT Advanced Server 3.1 Includes 16 and 32-bit Windows Sockets  Microsoft (Windows NT 16-bit) One Microsoft Way Redmond, WA 98112 206-882-8080 Contact: J Allard Windows/NT 3.1 and Microsoft Windows NT Advanced Server 3.1 Includes 16 and 32-bit Windows Sockets  Microsoft (Windows 3.x 16-bit) One Microsoft Way Redmond, WA 98112 206-882-8080 Contact: J Allard Microsoft TCP/IP for Windows for Workgroups Includes Windows Sockets  NetManage 20823 Stevens Creek Blvd Cupertino, CA 95014 408-973-7171 info@netmanage.com Chameleon and ChameleonNFS Chameleon is a TCP/IP applications package for Windows which includes: Telnet, FTP, SMTP/Mail, POP, TN3270, TFTP, Ping, Bind, SNMP, Finger, Whois, IP routing, Custom and Statistics.  Novell,Inc 180 Fortune Drive San Jose, CA 95131 (408) 473-8372 Novell Lan WorkPlace for DOS Spry, Inc 316 Occidental Avenue South, 2nd Floor Seattle, WA 98109 206 447-0300 Contact: Deanna Leung deanna@spry.com AIR for Windows AIR for Windows allows a PC to login to any Windows Sockets compliant UNIX or TCP/IP host. Telnet, ftp, lpr,nfs and mail is included. SunSelect 2 Elizabeth Drive Chelmsford, MA 01824-4195 508 442-2300 Contact:Sun PC-NFS version 5.0 Turbosoft P/L 248 Johnston St Annandale, NSW 2038 AUSTRALIA (+612) 552-1266 TTCP TCP/IP stack including ftp and BAPI interface WRQ Reflection 2815 Eastlake Ave. E Seattle, WA 98102 206-324-0350 Contact: Evan Kaplan TCP Connection NS Connection 3000 Connection The Wollongong Group 1129 San Antonio Road Palo Alto, CA 94303 Contact: Earle Speranza 800 872-8649 sales@twg.com Wollongong PathWay Access for DOS Appendix B. WINDOWS SOCKETS APPLICATIONS (Commercial and Public Domain) The following companies are providing commercial Windows Sockets compatible applications. Please contact the company for details of current availability. Vendor & Contact Product Name Product Description Windows Sockets - Version(s) Supported  AGE Logic 9985 Pacific Heights Blvd San Diego, CA 92121 Contact: Sales 619 455-8600 XoftWare/32 for Window 32-bit X Window Server software for Microsoft Windows-based PCs 1.1  Attachmate Corporation 3617 131st Ave SE Bellevue, WA 98006 (206) 644-4010 Fax: (206) 747-9924 Attachmate Extra! for Windows 3270 Emulation Software for the Windows environment 1.1  American Computer and Electronics Corporation 209 Perry Pkwy Gaithersburg MD 20877 Contact: Bob Natale 301 258 9850 natale@acec.com NetPlus/Fault Management System NetPlus/Configuration Management System NetPlus/Accounting Management System NetPlus/Performance Management System NetPlus/Security Management System NetPlus/Directory Management System NetPlus/Telephony Management System NetPlus/Product Backplane System NetPlus (tm) is a family of integrated network management applications supplying full-service OSI FCAPS coverage and using the SNMPv2 management protocol. 1.1  Center for Applied-Large Computing (CALC) Polytechnic University Contact: Marc B. Manza manza@flash.poly.edu Green Pages Distributed system providing convenient access to cataloged information for assisting users in locating and retrieving information concerning global change 1.1 Distinct Corporation 14395 Saratoga Ave, Suite 120 Saratoga, C 95070 Contact: sales 408 741-0781 phone 408 741-0795 fax mktg@distinct.com Distinct TCP/IP- SDK Distinct TCP/IP -TCPTools ONC RPC/XDR DLL with RPCGEN, Telnet, FTP and NetWin DLLs running on Windows Sockets with complete APIs; 100% DLL Windows Sockets implementation included with support for Ethernet, Token Ring, FDDI, ISDN, SLIP and PPP; smallest and fastest implementation available Multiple concurrent Telnet sessions with terminal emulation, drag and drop FTP (client and server), TFTP, Ping, LPR/LPD, Back-Up with TAR; SLIP and PPP with scripting included. 1.1 Frontier Technologies 10201 N. Port Washington Rd. Mequon, WI 53092 414-241-4555 Contact: Ray Langford tcptech@frontiertech.com Super-TCP Apps for Windows TCP/IP networking applications include MIME Email, NFS Client/Server, FTP/TFTP Client/Server, VT320, tn3270, News Reader, LPR Client, LPD Server, Talk, Remote Protocols. 1.0, 1.1  Gallagher & Robertson A/S Bull HN Information Systems Inc Postboks 1824, Vika P.O. Box 7027 0123 Oslo Norway Contact: Mike Robertson +47 2 41 85 51 mike@sx.gar.no Glink for Windows General purpose emulator with accent on the Bull environment. Does VIP7700, VIP7800 emulation for Bull mainframes, VT102 through VT340 minus graphics functionality, Viewdata, Minitel. 1.1 Gradient Technologies Inc 577 Main St., Suite 4 Hudson, MA 01749 Contact: Bill Blackwell (508) 562-2882 wcb@gradient.com PC-DCE Open Software Foundation (OSF) Distributed Computing Environment (DCE) for Windows 1.1  Genisys 314 S. Jay St Rome, NY 13440 Contact: Michael J. Baldwin 315 339 5502 baldwin@GENISYS.com GENISYS Comm Pack++ (GCP++) The GCP++ TCP/IP toolkit for Windows Sockets 1.1 provides a high-level API to UDP, TCP, TELNET, TFTP and PEER protocols, using a 3-function API or Visual Basic Custom Controls. 1.1  Hughes LAN Systems Contact: K.C. Clawson kcc@hls.com ProLINC 1.1 Hughes LAN Systems Contact: K.C. Clawson kcc@hls.com ProLINC WINtools TCP/IP utilities including telnet, ftp, ping etc. 1.1 Hummingbird Communications Ltd 2900 John Street, Unit 4 Markham, Ontario L3R 5G3 CANADA 416 470-1203 eXceed/WX Server for MS Windows 1.1 Hypercube Inc Unit 7-419 Phillip St Waterloo, Ontario N2L 3X2 CANADA 519 725-4040 Modelling Software, Remote Process Execution 1.1 I-Kinetics, Inc. 19 Bishop Allen Drive, Cambridge MA 02139 Contact: Abe Hirsch Phone: (617) 661-8181 sales@i-kinetics.com I-Bridge for Windows Complete solution for accessing Oracle and Sybase from MS Windows Applications 1.1 John Fluke Mfg, Co. P.O. Box 9090 Everett WA 98206 206 356-5790 Instrument Control Software 1.1 JSB Corporation 108 Whispering Pines Drive Scotts Valley, CA 95066 Contact: Dan Reis 408 438-8300 danr@jsbus.com MultiView DeskTop MultiView/XWindows/UNIX PC integration incorporating high performance ANSI, SCO Console, VT100 & VT220 terminal emulation and including DDE support and the JSB Virtual Socket Library Windows/UNIX PC integration incorporating high performance X Server and ANSI, SCO Console, VT100 & VT220 terminal emulation and also including DDE support and the JSB Virtual Socket Library 1.0, 1.1  Kvam data as PO.BOX. 1101, Lura 4301 SANDNES NORWAY Contact: Knut Rogde +47 4 623766 info@kvamdata.no FICS 4GL database & application tool 1.1 Lanera Corp Lanera Corporation 516 Valley Way Milpitas, CA 95035 408-956-8344 Contact: Peter Pham Internet: lanera@netcom.com Terminal emulation for DEC, IBM, ANSI, TN3270, etc with built-in TELNET/FTP   Microdyne Corporation 239 Littleton Rd., Westford, MA 01886 Contact: Harald Skardal 508-392-9953 haralds@Microdyne.COM FTP Shell for Windows Drag-and-drop FTP client for Microsoft Windows. 1.1  NetManage Inc 20823 Stevens Creek Blvd Cupertino, CA 95014 408 973-7171 Contact: Sales 408-973-7171 info@netmanage.com Chameleon, ChameleonNFS TCP/IP that is 100% DLL based and supports Windows Sockets 1.1. 1.1 Network Computing Devices 9590 SW Gemini Beaverton, OR 97005 503 641 2200 robw@pcx.ncd.com PC-Xview PC X Server for Windows and Windows/NT 1.1 Optigraphics Corporation 9339 Carroll Park Drive, San Diego, CA 92121 Contact: Kari Johnson 619-625-3000 kari@optigfx.com Engineering Document Automation System Allows scanning, viewing, markup, edit, and printing of engineering documents 1.1  Persoft, Inc. 465 Science Drive Madison, WI 53711 Contact: Carol Nelson 608 273-6000 SmarTerm 420 for Windows SmarTerm 340 for Windows SmarTerm 470 for Windows Terminal emulation for Microsoft Windows for PC connectivity to UNIX, VAX/VMS and Data General hosts 1.1 SAS Institute Inc SAS Campus Dr. Cary, N.C. 27513 Contact: Glenn Horton 919-677-8000 sasdgh@unx.sas.com The SAS System Application developent system that allows users to develop applications that are easily ported between the many hosts that the SAS System runs on 1.1  Softronics, Inc. 5085 List Drive Colorado Springs, CO 80919 719-593-9540 Contact: Jim Cook jcook@softron.softronics.com Terminal emulation for DEC, IBM, HP, Tanden, Data General, Tektronix, Wyse, TN3270, Televideo, etc. with built-in TELNET/FTP   Spry Inc 1319 Dexter Avenue North Seattle, Washington 98109 Contact: Deanna Leung (206) 286-1412 deanna@spry.com AIR for Windows WinSock RPC AIRMAIL AIR for Workgroups AIR NFS SPRY's AIR for Windows allows a PC to login to any UNIX or TCP/IP host An implementation of Sun's ONC+/TI-RPC library for Microsoft Windows. A Windows implementation of Internet Mail. TCP/IP for Microsoft's Windows for Workgroups that configures three protocols simultaneously on the desktop using one network card. Users can mount UNIX File Systems as virtual drives on the PC. 1.1 Sycomp Pty Ltd Level 4 1 James Place North Sydney 2060 AUSTRALIA Contact: troy@cbme.unsw.edu.au CorVu Enterprise Information System, End user SQL database query tool, Report Writer, Forecasting 1.1 TurboSoft Pty Ltd 248 Johnston St Annandale NSW 2216 AUSTRALIA Contact: Matthew Green +(612) 552-1266 info@abccomp.oz.au TTWin Terminal emulation covering DEC, IBM, HP, PRIME, Wyse and others, File Transfer, Network Printing 1.1 Unipalm Ltd 216 The Science Park Milton Road Cambridge CB4 4WA England Contact: Tom Kermeen tom@unipalm.co.uk Mail-it Mail-it is an MS Windows application,providing the PC user who wishes to have direct access to Unix mail networks and the tens of millions of persons who have access to the internet with easy to use mail handling facilities including compose,send,receive,read and organise into folders. 1.1  VisionWare UK 57 Cardigan Lane Leeds LS4 2LE ENGLAND (+44) 532-788858 VisionWare USA 1020 Marsh Road, Suite 220 Menlo Park, CA 94025 415 325-2113 XVision X Server for Microsoft Windows 1.1 VisiSoft 2700 N.E. Expressway, Suite B-700. Atlanta, GA 30345 Contact: Al McCabe 800 VISINET (404) 320 0077 VisiNet Network Management for Microsoft LAN Manager, IBM LAN Server, Novell Netware, NetBIOS, and SNMP 1.1  WRQ Reflection 2815 Eastlake Ave. E Seattle, WA 98102 206-324-0350 Contact: Evan Kaplan Reflection X An X Window System Server 1.1 XSoft 3400 Hillview Ave Palo Alto, CA 92304 800 428-2995 Document Management 1.1 The following public domain Windows Sockets compatible applications are available. Author & Contact Product Name Product Description Windows Sockets - Version(s) Supported  Kevin Gamiel - 3021 Cornwallis Road Research Triangle Park, North Carolina 27709-2889 KEVIN.GAMIEL@CNIDR.ORG 919-248-1499 The Gopher Book WAIS Manager Access the Internet via a "book" filled with text, pictures, and services. sunsite.unc.edu /pub/micro/pc-stuff/ms-windows/winsock/apps/gophbook.zip Perform free-text queries on hundreds of information databases around the world. sunsite.unc.edu /pub/micro/pc-stuff/ms-windows/winsock/apps/wais_wsk.zip 1.1 1.1 Appendix C. Frequently Asked Questions (FAQ) Frequently Asked Questions About Windows Sockets Version 1.1 22 April 1993 This FAQ has been put together by Mark Towfiq, with much-appreciated assistance from Jay Allard, Bruce Backman, Paul Brooks, Martin Hall, Bob Quinn, Ed Schwalenberg, Bill Tang, and Dave Treadwell. If you have any modifications to this FAQ, send them to towfiq@Microdyne.COM, and they will be folded into the next revision. 1. What is Windows Sockets? Answer: The Windows Sockets specification defines a network programming interface for Microsoft Windows which is based on the "socket" paradigm popularized in the Berkeley Software Distribution (BSD) from the University of California at Berkeley. It encompasses both familiar Berkeley socket style routines and a set of Windows-specific extensions designed to allow the programmer to take advantage of the message-driven nature of Windows. The Windows Sockets Specification is intended to provide a single API to which application developers can program and multiple network software vendors can conform. Furthermore, in the context of a particular version of Microsoft Windows, it defines a binary interface (ABI) such that an application written to the Windows Sockets API can work with a conformant protocol implementation from any network software vendor. This specification thus defines the library calls and associated semantics to which an application developer can program and which a network software vendor can implement. Network software which conforms to this Windows Sockets specification will be considered "Windows Sockets Compliant". Suppliers of interfaces which are "Windows Sockets Compliant" shall be referred to as "Windows Sockets Suppliers". To be Windows Sockets Compliant, a vendor must implement 100% of this Windows Sockets specification. Applications which are capable of operating with any "Windows Sockets Compliant" protocol implementation will be considered as having a "Windows Sockets Interface" and will be referred to as "Windows Sockets Applications". 2. What is the latest version? Answer: The latest version of the specification is 1.1. 3. When is the next rev of the specification? Why not sooner? Answer: The next rev. (2.0) will not be until towards the end of 1993. We need 1.1 of the API to become firmly settled and implemented first. 4. Where can I get a/the WINSOCK.DLL? Answer: You should first contact the vendor from whom you obtained your TCP/IP software. JSB Corporation also provide a WINSOCK.DLL for existing TCP/IP implementations. 5. Do I need a TCP/IP already to use it? Answer: Yes. A WINSOCK.DLL is just an interface to whatever existing TCP/IP you already have installed. 6. Why isn't there just one WINSOCK.DLL? Do I need a TCP/IP already to use it? Answer: The Windows Sockets specification defines the top level of the DLL, the part which is called by user programs. The method a given WINSOCK.DLL will use to access TCP/IP (or NetWare, or AppleTalk, or DECNet ...) depends on the networking package you have installed, and therefore must vary. A WINSOCK.DLL is therefore just an interface to whatever existing protocol you already have installed. An illustration would help: +---------------------------------+ | WinSock compliant application | +---------------------------------+ +---------------------------------+ <--- WinSock API | Windows Sockets DLL | +---------------------------------+ +---------------------------------+ <--- Protocol Stack API | Protocol Stack (e.g. TCP/IP) | (typically proprietary) +---------------------------------+ +---------------------------------+ <--- Hardware Driver API | Hardware Driver | (Packet Driver, NDIS, ODI, +---------------------------------+ or proprietary) +---------------------------------+ <--- Hardware Interface | Network (hardware) Interface | (hardware specific) +---------------------------------+ | +----> network 7. Where can I get sample applications and tests? Answer: Files and information related to the Windows Sockets API are available via FTP (user: "anonymous", password: your e-mail address) on the host SunSite.UNC.EDU, in /pub/micro/pc-stuff/ms-windows/winsock, which is a mirror of /pub/winsock on Microdyne.COM (SunSite has a much faster connection to the Internet, so you are advised to use that). Note: if you do not have FTP access to the Internet, send a message with the word "help" in the body to either ftpmail@SunSite.UNC.Edu, or ftpmail@DECWRL.DEC.Com (in the UK mail to ftpmail@doc.ic.ac.uk), to obtain information about the FTP to Mail service there. 8. Will Windows Sockets be in _____? 8.1. Will Windows Sockets be in Windows NT? Answer: Yes. In 16 and 32-bit versions. 8.2. Will Windows Sockets be in Windows for Workgroups? Answer: Yes. 8.3. Will Windows Sockets be in DOS? Answer: Paul Brooks of TurboSoft (paul@abccomp.oz.au) tells me: As for a Windows Sockets for DOS - we have a library that is pretty much complete. The goal was to produce a DOS library and Binary API which would allow developers to code applications using the Windows Sockets 1.1 spec. and have it run exactly the same under DOS as Windows - blocking and non-blocking modes, Asynchronous calls, the works. Apart from some AsyncGetXXXbyYYY calls the rest works, although it is not possible to capture all the Windows-specific semantics of some areas. I am sure you can contact him for more information. JSB also has a standardized Berkeley Sockets API for DOS which provides access to all TCP/IP implementations. 8.4. Will Windows Sockets be in UNIX? Answer: Well, since it came from BSD UNIX, there's not much need. 8.5. Will Windows Sockets be in Win32-S? Answer: I think so. 9. What about standard APIs for ____? 9.1. What about standard APIs for FTP? Answer: Not yet. 9.2 What about standard APIs for Telnet? Answer: Not yet. 9.3 What about standard APIs for SNMP? Answer: In the works. Send e-mail to winsnmp-request@Microdyne.COM to join the list. 9.4 What about standard APIs for RPC? Answer: Microsoft will be providing an implementation of DCE RPC. Also in the works is the definition of a standard implementation of ONC RPC (known as RPC for Windows) which will be made available by multiple vendors. To contribute to the discussion, send email to rpc4win@wco.ftp.com. 9.5 What about standard APIs for TLI/XTI? Answer: No, not yet. Vendors chose to do Windows Sockets because of the sockets application and knowledge base, however anyone out there is free to try a Windows TLI/XTI Specification. 10.1 Does Windows Sockets work over protocols other than TCP/IP? Answer: Yes, it does. But we know of no vendors supplying one currently. 10.2 Will it? Answer: Yes. Windows NT will include mechanisms for multiple protocol support in Windows Sockets, both 32-bit and 16-bit. 11. Why no SOCK_RAW? Answer: SOCK_RAW is optionally implemented by many major Windows Sockets vendors. It is not mandated now because: 1) not every stack vendor can supply a complete SOCK_RAW interface, and 2) we did not have time to define the minimal subset every vendor could provide (e.g. maybe just ICMP). 12. Why isn't it possible to share sockets between tasks? Answer: The real answer is that it wasn't considered sufficiently important for 1.1, but is high on the list for inclusion in 2.0. 13.1. How do I get my IP address? Answer: Do a gethostbyname() on the output from gethostname(). 13.2. Why no SIOCGIFADDR? Answer: It was not included because there were concerns it could not be supported across platforms. It may be included in version 2.0 of the spec. 14. When should I use blocking vs. non-blocking sockets? Answer: Try to use non-blocking sockets whenever possible; certainly if you are coding a Windows application from scratch. Blocking sockets should only be used when trying to maintain portability between UNIX/MS-DOS and Windows. Please note you have to consider issues of application reentrancy when using blocking sockets. However, using non-blocking sockets your application will not be re-entered via a WINSOCK.DLL. 15. What about other socket options that BSD supports? Ioctls? Answer: Some vendors may support them. Do not rely on ones not explicitly mentioned in the specification, however. 16. How can I get the local username? Answer: No can do from Windows Sockets. Win32 (e.g. NT) has an API, GetUserName(), for it, but there is no generic mechanism in Win 3.1. 17. Do I need to initialize the WSAData structure before calling WSAStartup? Answer: No, WSAStartup does not retrieve the contents of the WSAData structure pointed to, it fills it in. 18. If I write a Windows Sockets program, will I be able to communicate with a Sockets program on UNIX or any other non Windows platform? Answer: This common question is the result of confusing protocols with the APIs; communicating programs need not have been created with the same APIs, as long as they are using the same (transport & network) protocols. 19. Is it possible to create sockets that map to a dll rather than an application? I have tried a WSAStartup() as part of my LibMain, but the sockets that are created are owned by the application, not by the DLL. It would be desirable for me to have some of the sockets that are opened have "A Global (DLL wide) Scope". Answer: The way this situation has been dealt with by developers is to have your DLL create a "helper process" which will perform all Windows Sockets operations on behalf of your applications (thereby having all sockets owned by the helper process' task). 20. A *Class* of questions that could be answered are related to porting extant BSD applications to Windows Sockets: "How to I implement the xxxx function call in my Windows Sockets application?" (e.g. fcntl(), readv(), etc). Answer: In general, you will have to code such functions yourself, although it would not hurt to suggest them for the next revision of the specification as well. 21. Is there a Pascal/Visual Basic/Visual Cobol header file for Windows Sockets? Answer: The Pascal form is already in the FTP archive. Look there for any other header files that people may have developed so far. Windows and Windows NT are trademarks of Microsoft Corporation. A Guide to Windows Sockets ===The End===