1998.12.24 - Added a few items to the BSD sockets compatibility tutorial.
1998.12.14 - Fixed a problem with Question 2.8, and generally improved the answer to that question and to Question 2.12.
1998.11.24 - Added the first "basic Winsock client" example program. More clients and also some server programs will follow in the series.
1998.11.22 - Touched up several FAQ entries that refered to other people's copy of the Lame List to point to the version I just added.
1998.11.20 - Added a copy of The Lame List to the Tutorials section. Must reading!
Several minor changes, especially to the newer items added on the sixth of this month.
1998.11.06 - Added Tutorial 5, which introduces the reader to the black magic of low-level TCP debugging. In particular, it covers the netstat tool and the TCP/IP state/transition diagram how to read it, what to do when you get into problem states, how to diagnose the current state of the system, etc.
Reworked Question 2.9 a bit as a result of the new Tutorial. (It used to be called "How can I debug my Winsock program?", for example. Clearly inappropriate given the new material, and what the Question actually covered.)
Updated Question 2.8. The new Answer is more cosmopolitan in its advice, and it also addresses abnormal-disconnect issues, whereas the previous Answer only covered normal disconnects.
1998.10.26 - Added Question 2.12, having to do with the proper way to close a socket.
Added Question 2.13, regarding MFC's CAsyncSocket and CSocket classes.
Added Question 3.18, regarding a method to bypass the routing layer on a machine with multiple network interfaces.
Added Question 3.19, which is about using SOCKS to drill through a firewall.
Added Question 3.20, regarding whether it is a good plan to call bind() in a client program.
Numerous other minor updates.
1998.09.27 - Added support for changing the TTL value to the raw sockets ping program.
1998.09.19 - Updated the much-neglected Section 1.
I just discovered that Question 2.12, which I added almost two months ago, is essentially identical to Question 2.2. You know your FAQ is getting big when.... Anyway, I nixed Question 2.12, and used its text in place of the less-well-written 2.2 text.
1998.09.07 - Added Reviews section, and wrote the first five book reviews for it.
1998.08.23 - Added Questions 3.16 and 3.17, regarding issues of "how many sockets can Winsock handle".
1998.08.01 - Added Tutorial 3. This material largely supercedes Questions 3.4 and 3.7, so those items have also changed.
Turned Questions 2.12 and 2.13 into Tutorial 4.
Added a new Question 2.12, regarding how to speak various common protocols, like HTTP and FTP.
Added a new Question 3.4, regarding using the SNMP API for accessing the routing table, the ARP table, the interface list, etc. (It replaces the old Question 3.4, which was superceded by Tutorial 3.)
Updated several of the entries regarding Windows 98.
1998.07.31 - Added two more network monitoring packages to the Debugging portion of the FAQ's Resources section.
Replaced Tutorial 2 with a new, completely-rewritten version.
1998.05.19 and 1998.05.20 - Improved the wording of Question 3.15.
1998.04.28 - Fixed a broken link.
1998.04.19 - Updated Question 1.9 and also the Resources section.
1998.03.23 - Added info on structure-padding issues to Question 2.13.
Updated Question 2.10 by removing the rumor that FormatMessage can return error messages for Winsock error numbers. I have since found out that at best this is undocumented behavior that only works on one or two of Microsoft's Winsock implementations. It is by no means a universal thing.
1998.03.22 - Split Resources page up so that each sub-section has its own page.
Put the index pages for all the sections with their own directory in that directory. Now, the HTML file of the same name is just a redirector. For example, the old examples.html file is now at examples/index.html, and examples.html automatically forwards you to the new page.
Added a few new sniffers to the Debugging Resources subsection and updated most of the the existing entries.
1998.02.23 - Added a bit of info to the Get Interface List example.
Added a bug note to the Get MAC Address (NetBIOS version) example.
1998.02.16 - Added Questions 3.13 and 3.14, concerning raw sockets and such. Also updated Question 3.1 to reference the new questions for more information.
Added Question 3.15, concerning the time and place for turning off the Nagle algorithm.
Added a number of glossary entries.
1998.02.14 - Added the "raw ping" example. Also touched up the answers to questions 3.1, 3.2, 3.8 and 1.7.
1998.02.02 - Added a new tutorial, Winsock for the Impatient.
Updated the Glossary some, mainly the router, gateway and bridge entries and other related things.
1998.02.01 - Updated Questions 1.3 and 1.8 with better Winsock 2 info.
Expanded Question 3.9 and split it up into Questions 3.9 through 3.11. Because they are all related, I didn't put the new questions at the end of the list, as I usually do. Instead, the old Question 3.10 is now Question 3.12.
Had one of those periodic whole-FAQ editing fits, and ended up re-working a lot of the text, partly for accuracy, partly to fill in missing detail, and partly just so that it reads better.
1998.01.31 - Fixed a minor problem in Question 3.8.
Added Question 2.10, which explains how to get a readable error message from a Winsock error number.
Added Question 2.11, which sheds some light on the poorly-understood WSAEWOULDBLOCK error.
Added Question 2.12, which deals with the common misconceptions about how TCP "should" work versus how it actually does work.
Added Question 2.13, which talks about "network order" for integers.
Added Question 3.9, which deals with the behavior of asynchronous sockets in a multithreaded program.
Added Question 3.10, which explains how to tell if the modem is connected on systems with dial-up networking.
Added the "get interfaces" example.
1998.01.19 - Added the Tutorials section. The first one is the information from the way-too-long answer to Question 2.4, in article format. The new answer to Question 2.4 mainly just summarizes the article and points readers to it for more information.
1998.01.17 - Added Winsock debugging tools section to Resources page.
Added Question 2.9 to introduce the new debugging tools section.
1998.01.16 - Updated the Introduction page significantly. If you haven't read through it recently, you may want to give it a quick skim, especially the "future directions" section and the short-and-unoriginal legal statement.
1998.01.12 - Updated Question 2.7 to be correct some misconceptions present in earlier versions.
Expanded and reorganized the Resources section significantly.
Clarified and enhanced Question 1.6.
1998.01.04 - Added the "get MAC address" examples (NetBIOS and RPC methods). Also added Question 3.8 to introduce those examples.
Enhanced Question 3.1, adding more details about the support for raw sockets on Microsoft and other Winsock implementations.
Split Question 2.4 into Questions 2.4a, 2.4b, and 2.4c. Each part is now greatly enhanced, resulting in a much broader and tolerant answer. [Obsolete see the note for 1998.01.19 for newer info].
1997.10.27 - Added some info to Question 3.3. Also changed the wording to use Microsoft's preferred term "process" rather than "task."
1997.10.09 - Added the Glossary
1997.10.07 - Added this list.
Improved answer to Question 2.3, including a second method for getting the local IP address, and adding some caveats to the first method.
Refined answer to Question 2.4, making the distinction between non-blocking and blocking sockets. What was previously called non-blocking is now called "asynchronous". (This was not incorrect, just imprecise.) Also corrected some misconceptions about the behavior of blocking sockets.
1997.08.14 - First announcement for the FAQ posted to Usenet.
![]() |
Go to my home page |
![]() |
Go to my Important RFC Lists page |
![]() |
Go to the main Programming Resources page |
Please send updates and corrections to <tangent@cyberport.com>.