📄 history.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><html lang="en"><head><title>Winsock Programmer's FAQ: Revision History</title><link rel="Stylesheet" type="text/css" href="./faq.css"></head><body bgcolor="#ffffee" text="#000000" link="#491e00" vlink="#7d2e01" alink="#da7417"><!-- ---- Header Bar ---- --><table border="0" width="95%" bgcolor="#006000" cellpadding="5" cellspacing="3" align="center"> <tr> <td align="center"> <font face=Verdana,Arial,Helvetica color="#ffffee"> <p align=center class=bigger3><b> Winsock Programmer's FAQ<br> Revision History </b></p> </font> </td> </tr></table><!-- ---- Body Table ---- --><table width="95%" border="0" cellpadding="10"> <tr valign="top"> <td><h4>NOTE: After this point, all links into the FAQ are bogus, sincethe FAQ went through a major redesign here.</h4><hr noshade size=1 color=#404040><p><b>1999.09.25</b><br><p class=inset>Added some more info to the <ahref="tutorials/bsd-compatibility.html">BSD Sockets Compatibility</a>tutorial.</p><p><b>1999.08.30</b></p><p class=inset>Updated the <a href="examples/dllping.html">ICMPPing Example</a> so that it compiles cleaner, and updated the commentaryto note that the program still works on Microsoft's newest platforms(Win98 and Win2K) despite their past threats to remove the API.</p><p class=inset>Added some new info on the "how many sockets can you have open"problem discussed in <a href="advanced.html#q16">Question 3.16</a>. Thenew info discloses kernel internals that limit the number of sockets youcan create on Windows NT 4.0 and Windows 2000. The item also includes someempirical data I've collected from Internet postings; some conclusionsare drawn based on this data and the known kernel algorithms. I alsoadded some info on increasing the low hard limit imposed under Win9x.</p><p class=inset>Improved the accuracy of the info on waitable timers in <ahref="newbie.html#q14">Question 2.14</a>.</p><p class=inset>Added the <a href="#search">Search</a> function, courtesy of <ahref="http://www.freefind.com/">FreeFind</a>.</p><p class=inset>Added <a href="newbie.html#q18">Question 2.18</a>, regarding theWinsock link library. (This question comes up with distressing frequency,so I broke down and added it to the FAQ. What <i>is</i> the world comingto? :-/)</p><p><b>1999.07.19</b></p><p class=inset>Updated the new "raw socket capabilities" table initem <a href="advanced.html#q1">3.1</a> with new information on whatWindows 2000 will support.</p><p><b>1999.06.27</b></p><p class=inset>Fixed several broken links and added a number ofnew items to the <a href="resources/debugging.html">Debugging</a> pageof the FAQ's Resources section.</p><p class=inset>Improved item <a href="newbie.html#q15">2.15</a>, regarding the bestway to send a broadcast packet.</p><p class=inset>Changed item <a href="advanced.html#q17">3.17</a>. It used to saythat only buggy Winsock stacks and LSPs limited the number of socketsper <tt>select()</tt> to 64, but I've been reliably informed that atleast one respected Winsock vendor's stack behaves this way, and theyaren't willing to change it. So, the FAQ item now recommends againsttrying to force your way past this limitation.</p><p class=inset>Improved item <a href="advanced.html#q18">3.18</a>, to note that itsadvice won't help work around a certain Windows 9x bug, though it seemslike it should help.</p><p class=inset>I just found out a way to get quasi-<tt>dup2()</tt> functionalityunder Winsock. Thus, the <a href="tutorials/bsd-compatibility.html">BSDCompatibility</a> and <a href="advanced.html#q3">Question 3.3</a> itemshave been updated.</p><p class=inset>Added item <a href="advanced.html#q21">3.21</a>, to point peoplewanting to know about the control bits in a TCP packet to the DebuggingTCP tutorial which covers this.</p><p class=inset>Added item <a href="newbie.html#q17">2.17</a>, regarding advice forchoosing server ports.</p><p><b>1999.04.12</b></p><p class=inset>Revamped <ahref="tutorials/effective-tcp.html">Tutorial 4</a>. I reworked theexisting text, added some examples and went into more depth on sometopics. More importantly, I changed the title from "Why Does WinsockKeep Corrupting My Data?" to "How to Use TCP Effectively". In the eightmonths that the tutorial has been online, I've come to realize that theoriginal title was not quite accurate, so that many who should have readthe tutorial were skipping over it because they didn't realize that itapplied to problems they were having.</p><p class=inset>Updated <a href="newbie.html#q14">Question 2.14</a> with informationon aborting a wait on an event object by using a waitable timer.</p><p class=inset>Added <a href="newbie.html#q15">Question 2.15</a>, regardingbroadcasting.</p><p class=inset>Split <a href="newbie.html#q8">Question 2.8</a>: the new Q2.8 dealswith normal TCP disconnects. The rest of the information from the oldQ2.8, having to do with abnormal network disconnects, is now in <ahref="newbie.html#q16">Question 2.16</a>.</p><p class=inset>Reports indicate that my <ahref="examples/getifaces.html">getifaces</a> sample fails on Windows 95,so I've updated that page to reflect this.</p><p><b>1999.04.08</b></p><p class=inset>Tweaked some of the answers in <ahref="advanced.html">Section 3</a> for accuracy.</p><p><b>1999.04.05</b></p><p class=inset>Item <a href="advanced.html#q14">3.14</a> basicallysaid "you can't do that" to people wanting to do low-level networkI/O. That's only true if you're just talking about the Winsock API. Thecurrent answer for that question breaks out of that box and providespointers to other mechanisms for accessing the lower levels of thenetwork stack.</p><p class=inset>I normally don't announce updates to the pages in the <ahref="resources/">Resources</a> section, because most often thechanges merely reflect a site that has moved or something similarlytrivial. This latest change is fairly significant, though: the <ahref="resources/web-pages.html">Web Pages</a> page now has links to anumber of related FAQs.</p><p><b>1999.03.25</b></p><p class=inset>Small changes to this main page and also to the <ahref="intro.html#q4">Mirrors</a> section.</p><p><b>1999.03.21</b></p><p class=inset>Added item <a href="intro.html#q6">0.6</a>, whichexplains the FAQ's programming language bias and the reasons forit. Note that I moved the old item 0.6 (Acknowledgements) to 0.7. Idid this because I prefer to keep the Acknowledgements section in itstraditional place, at the end of the introductory material.</p><p class=inset>Simplified the answer to <a href="intro.html#q5">Question 0.5</a>,which discusses the reasons I prefer not to answer Winsock questionsby email.</p><p class=inset>Updated <a href="general.html#q6">Question 1.6</a>, mainly with moreinformation on alternatives to Winsock for DOS programmers. Also added aparagraph to clear up the confusion between a DOS program and a consolemode program which happens to run in a "DOS box" on Win32. (Many people,when they say they want to write a Winsock program that runs under DOS,really just want a console mode program.)</p><p><b>1999.03.17</b></p><p class=inset>(<font color=green>Saint Patrick'sDay</font>!) Updated <a href="newbie.html#q7">Question 2.7</a> again,this time to clarify the language issues some more.</p><p class=inset>Revamped the answer to <a href="advanced.html#q9">Question 3.9</a>again. I looked back over the previous update and was still unhappy withthe way the item was phrased. So, I started working on it and ended uprewriting the whole item!</p><p class=inset>As a result of the previous change, I touched up <ahref="advanced.html#q10">Question 3.10</a>, because it referred to theold Q3.9 language.</p><p><b>1999.03.12</b></p><p class=inset>Updated <a href="newbie.html#q7">Question 2.7</a> tobetter cover the issues associated with programming Winsock in languagesother than C or C++.</p><p class=inset>Clarified the answer to <a href="advanced.html#q9">Question 3.9</a>,regarding warnings about accessing a single socket from multiplethreads.</p><p class=inset>Added information to <a href="tutorials/corruption.html">Tutorial 4</a>on sending non-integer data across platforms.</p><p><b>1999.03.01</b></p><p class=inset>Fixed a bug in <ahref="examples/basics/basic-client.cpp">basic-client.cpp</a> from <ahref="examples/basics/index.html">Example 10</a>. Thanks for the bugcatch go to Jerome Jacobsen.</p><p><b>1999.02.23</b></p><p class=inset>Made a minor update to <ahref="newbie.html#q10">Question 2.10</a>.</p><p class=inset>Added <a href="newbie.html#q14">Question 2.14</a>, having to do withtimeouts and blocking Winsock functions.</p><p><b>1999.02.21</b></p><p class=inset>Updated the OS/2 entry in <ahref="general.html#q6">Question 1.6</a>.</p><p><b>1999.02.16</b></p><p class=inset>Reworked <a href="intro.html">Introduction</a>page to be part of the main FAQ (Section 0).</p><p><b>1999.01.04</b></p><p class=inset>Added the basic-server example to <ahref="examples/basics/index.html">Example 10</a>.</p><p><b>1998.12.24</b></p><p class=inset>Added a few items to the <ahref="tutorials/bsd-compatibility.html">BSD sockets compatibility</a>tutorial.</p><p><b>1998.12.14</b></p><p class=inset>Fixed a problem with <a href="newbie.html#q8">Question2.8</a>, and generally improved the answer to that question and to <ahref="newbie.html#q12">Question 2.12</a>.</p><p><b>1998.11.24</b></p><p class=inset>Added the first "basic Winsock client" exampleprogram. More clients and also some server programs will follow in <ahref="examples/basics/index.html">the series</a>.</p><p><b>1998.11.22</b></p><p class=inset>Touched up several FAQ entries that refered to otherpeople's copy of the Lame List to point to the version I just added.</p><p><b>1998.11.20</b></p><p class=inset>Added a copy of <a href="tutorials/lame-list.html">TheLame List</a> to the Tutorials section. Must reading!</p><p class=inset>Several minor changes, especially to the newer items added on thesixth of this month.</p><p><b>1998.11.06</b></p><p class=inset>Added <a href="tutorials/debugging-tcp.html">Tutorial5</a>, which introduces the reader to the black magic of low-level TCPdebugging. In particular, it covers the <tt>netstat</tt> tool and theTCP/IP state/transition diagram <img src="bitmaps/waist-dot.gif" alt="--"width=14 height=6 hspace=2> how to read it, what to do when you get intoproblem states, how to diagnose the current state of the system, etc.</p><p class=inset>Reworked <a href="newbie.html#q9">Question 2.9</a> a bit as a resultof the new Tutorial. (It used to be called "How can I debug my Winsockprogram?", for example. Clearly inappropriate given the new material,and what the Question actually covered.)</p><p class=inset>Updated <a href="newbie.html#q8">Question 2.8</a>. The new Answer ismore cosmopolitan in its advice, and it also addresses abnormal-disconnectissues, whereas the previous Answer only covered normal disconnects.</p><p><b>1998.10.26</b></p><p class=inset>Added <a href="newbie.html#q12">Question 2.12</a>,having to do with the proper way to close a socket.</p><p class=inset>Added <a href="newbie.html#q13">Question 2.13</a>, regarding MFC'sCAsyncSocket and CSocket classes.</p><p class=inset>Added <a href="advanced.html#q18">Question 3.18</a>, regarding amethod to bypass the routing layer on a machine with multiple networkinterfaces.</p><p class=inset>Added <a href="advanced.html#q19">Question 3.19</a>, which is aboutusing SOCKS to drill through a firewall.</p><p class=inset>Added <a href="advanced.html#q20">Question 3.20</a>, regarding whetherit is a good plan to call <tt>bind()</tt> in a client program.</p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -