home *** CD-ROM | disk | FTP | other *** search
- Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!news.kodak.com!news-nysernet-16.sprintlink.net!news-east1.sprintlink.net!news-peer1.sprintlink.net!news.sprintlink.net!howland.erols.net!dispose.news.demon.net!demon!newsfeed.icl.net!colt.net!news.belnet.be!news.tvd.be!feeder.nmix.net!198.59.136.4.MISMATCH!feeder.swcp.com!198.59.115.31.MISMATCH!news.cyberport.com!not-for-mail
- From: Warren Young <tangent@cyberport.com>
- Newsgroups: alt.winsock.programming,comp.os.ms-windows.programmer.tools.winsock,alt.answers,comp.answers,news.answers
- Subject: Winsock Programmer's FAQ (updated 1999.06.27)
- Followup-To: poster
- Date: 19 Jul 1999 16:28:53 GMT
- Organization: CyberPort Station
- Approved: news-answers-request@MIT.EDU
- Expires: Wed, 1 Sep 1999 00:00:00 GMT
- Message-ID: <7mvjo5$ctu$1@macaw.cyberport.com>
- NNTP-Posting-Host: 56k15-118.cyberport.com
- X-Trace: macaw.cyberport.com 932401733 13246 204.134.118.15 (19 Jul 1999 16:28:53 GMT)
- X-Complaints-To: abuse@cyberport.com
- NNTP-Posting-Date: 19 Jul 1999 16:28:53 GMT
- Summary: Announcement for the major Winsock programming newsgroups' FAQ.
- Lines: 220
- Xref: senator-bedfellow.mit.edu alt.winsock.programming:12573 comp.os.ms-windows.programmer.tools.winsock:11541 alt.answers:43233 comp.answers:36977 news.answers:162668
-
- Archive-name: windows/winsock/programmer-faq
- Posting-Frequency: monthly (on or after the 19th)
- Last-modified: 1999/6/27
- URL: http://www.cyberport.com/~tangent/programming/winsock/
- Copyright: (c) 1997-1999 Warren Young
- Maintainer: Warren Young <tangent@cyberport.com>
- X-Disclaimer: Approval for *.answers is based on form, not content.
-
- What Is The Winsock Programmer's FAQ?
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- The Winsock Programmer's FAQ is a resurrected and expanded version
- of the original Winsock FAQ by Mark Towfiq. It is essentially
- a new work, though certain elements of its predecessor are still
- recognizable in the current FAQ.
-
- Where Is The FAQ?
- ~~~~~~~~~~~~~~~~~
- The online version of the FAQ is located at:
-
- http://www.cyberport.com/~tangent/programming/winsock/
-
- If you must read it offline, an archived version is kept at:
-
- http://www.cyberport.com/~tangent/programming/winsock/wskfaq.zip
-
- This latter is a zipped version of the complete FAQ, including
- the graphics. This archive is not kept strictly up to date.
- I do try and rebuild it for every major update to the page, but I
- make no guarantees.
-
- What's New?
- ~~~~~~~~~~~
- The past month's activity on the FAQ follows:
-
- 1999.07.19 - Updated the new "raw socket capabilities"
- table in item 3.1 with new information on what Windows
- 2000 will support.
-
- 1999.06.27 - Improved item 2.15, regarding the best way to
- send a broadcast packet.
-
- Changed item 3.17. It used to say that only buggy Winsock
- stacks and LSPs limited the number of sockets per select()
- to 64, but I've been reliably informed that at least one
- respected Winsock vendor's stack behaves this way, and they
- aren't willing to change it. So, the FAQ item now recommends
- against trying to force your way past this limitation.
-
- Improved item 3.18, to note that its advice won't help work
- around a certain Windows 9x bug, though it seems like it
- should help.
-
- I just found out a way to get quasi-dup2() functionality
- under Winsock. Thus, the BSD Compatibility and Question 3.3
- items have been updated.
-
- Added item 3.21, to point people wanting to know about the
- control bits in a TCP packet to the Debugging TCP tutorial
- which covers this.
-
- Added item 2.17, regarding advice for choosing server ports.
-
- This summary excludes typo fixes and updates to the Resources section.
-
- What Does The FAQ Want To Be When It Grows Up?
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- The FAQ's original focus was to attempt to answer all of the
- common questions, like "how do I do a ping", and "where can I get
- sample code". However, the FAQ is growing into a general Winsock
- programmer's resource for all levels of Winsock programmers, not
- just beginners.
-
- The FAQ has a largish Resources section with links to code, company
- web sites, freeware and shareware for Winsock programming, etc.
-
- The FAQ is also now branching out with longer articles. Currently,
- several tutorials exist, and more are on the way. The Reviews
- section is also under way, but I can think of many additions it needs,
- mainly software. (Software companies are welcome to email me with
- proposals for reviewing relevant packages!) Outside contributions
- of tutorials and reviews are welcome. See the following page under
- Future Directions for more info:
-
- http://www.cyberport.com/~tangent/programming/winsock/intro.html
-
- If you have an idea for a new FAQ item, I definitely want to hear from
- you. I also welcome corrections and expansions to existing items.
-
- The FAQ's Table of Contents
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Section 0 - Introduction
- 0.1 - The Original Introduction
- 0.2 - A Bit About the Maintainer
- 0.3 - Legal Stuff
- 0.4 - Mirrors
- 0.5 - What if your question is not in the FAQ?
- 0.6 - Language Bias
- 0.7 - Acknowledgements
-
- Section 1 - General Winsock Information
- 1.1 - What is Winsock?
- 1.2 - What is the latest version?
- 1.3 - When is the next rev of the specification?
- 1.4 - Where can I get a Winsock implementation?
- 1.5 - Why isn't there just one Winsock DLL? Do I need a
- network stack to use it?
- 1.6 - Is there a version of Winsock for { OS/2, DOS, UNIX,
- etc. }?
- 1.7 - Can Winsock speak { DECNet, IPX/SPX, etc. }?
- 1.8 - What does Winsock 2 have that Winsock 1.1 doesn't?
- 1.9 - Where can I get Winsock 2?
-
- Section 2 - Issues for New Winsock Programmers
- 2.1 - Are there any sample apps on the Net?
- 2.2 - How do I speak { HTTP, POP3, SMTP, FTP, Telnet, NNTP,
- etc. } with Winsock?
- 2.3 - How do I get my IP address from within a Winsock
- program?
- 2.4 - What kind of socket should I use?
- 2.5 - Do I need to initialize the WSAData structure before
- calling WSAStartup?
- 2.6 - If I write a Winsock program, will I be able to
- communicate with a UNIX Sockets program?
- 2.7 - Can I use Winsock with { Delphi, Visual Basic, Visual
- COBOL, etc. }?
- 2.8 - How do I detect when my TCP connection is closed?
- 2.9 - Are there any tools available for debugging Winsock
- programs?
- 2.10 - How do I get a readable error message from a Winsock
- error number?
- 2.11 - Winsock keeps returning the error WSAEWOULDBLOCK.
- What's wrong with my program?
- 2.12 - What's the proper way to close a socket?
- 2.13 - What can you tell me about MFC's CSocket and
- CAsyncSocket?
- 2.14 - How can I change the timeout for a Winsock function?
- 2.15 - How do I send a broadcast packet?
- 2.16 - How do I detect an abnormal network disconnect?
-
- Section 3 - Advanced Winsock Issues
- 3.1 - How can I open a raw data socket?
- 3.2 - How can I "ping" another machine with Winsock?
- 3.3 - How do I share a socket between two processes?
- 3.4 - How can I get access to the {route, ARP, interface, etc.}
- table?
- 3.5 - How can I get the local username?
- 3.6 - Is it possible to create sockets that map to a DLL
- rather than an application?
- 3.7 - I'm having trouble porting a BSD sockets program to
- Winsock. Help!
- 3.8 - How do I get the MAC (a.k.a. hardware) address of the
- local Ethernet adapter?
- 3.9 - In a multithreaded application, can more than one thread
- access a single socket?
- 3.10 - If two threads in an application call recv() on a
- socket, will they each get the same data?
- 3.11 - Is there any way for two threads to be notified when
- something happens on a socket?
- 3.12 - How do I detect if the modem is connected?
- 3.13 - How can I capture packets on a LAN with Winsock?
- 3.14 - How can I change the IP or TCP header of a packet?
- 3.15 - When should I turn off the Nagle algorithm?
- 3.16 - How many simultaneous sockets can I have open with
- Winsock?
- 3.17 - Can I change FD_SETSIZE to make select() wait on more
- than 64 sockets?
- 3.18 - How do I make Winsock use a specific network interface
- to make a connection?
- 3.19 - How do I write my program to work through a firewall?
- 3.20 - Is it a bad idea to bind() to a particular port in a
- client program?
-
- Section 4 - Resources
- 4.1 - Winsock Libraries and Controls
- 4.2 - Sample Winsock Applications and Tutorials
- 4.3 - Web Pages
- 4.4 - Winsock SDKs and Specifications
- 4.5 - Winsock Debugging Tools
- 4.6 - Network Suite Vendors
- 4.7 - Miscellaneous
-
- Section 5 - Examples
- Example 1 - Getting the Local IP Address
- Example 2 - Pinging a Host Using Microsoft's ICMP.DLL
- Example 3 - Pinging a Host Using Raw Sockets
- Example 4 - How to Get the Local User Name
- Example 5 - How to Pass a Socket Handle in Win32
- Example 6 - How to Get the MAC (a.k.a. "hardware") Address,
- NetBIOS method
- Example 7 - How to Get the MAC (a.k.a. "hardware") Address,
- RPC method
- Example 8 - Getting the Network Interface List
- Example 9 - Finding the Maximum Number of Open Sockets
- Example 10 - Several Basic Winsock Programs
-
- Section 6 - Tutorials
- Tutorial 1 - What Kind of Socket Should I Use?
- Tutorial 2 - Winsock for the Impatient
- Tutorial 3 - Winsock's Compatibility With BSD Sockets
- Tutorial 4 - Why Does Winsock Keep Corrupting My Data?
- Tutorial 5 - Debugging TCP
- Tutorial 6 - The Lame List
-
- Section 7 - Reviews
- Books
- Win32 Network Programming by Ralph Davis
- WinSock 2.0 by Lewis Napper
- Windows Sockets Network Programming by Bob Quinn and Dave Shute
- TCP/IP Illustrated, volume 1 by W. Richard Stevens
- UNIX Network Programming, volume 1 by W. Richard Stevens
-
- Software
- Nothing yet!
-
- Section 8 - Glossary
-
- --
- Warren Young -- Maintainer of The Winsock Programmer's FAQ
- Please, do not send unsolicited commercial email.
-
-