[ By Archive-name | By Author | By Category | By Newsgroup ]
[ Home | Latest Updates | Archive Stats | Search | Usenet References | Help ]

    Search the FAQ Archives


Winsock Programmer's FAQ (updated 1999.06.27)

There are reader questions on this topic!
Help others by sharing your knowledge

From: Warren Young <tangent@cyberport.com>
Newsgroups: alt.winsock.programming, comp.os.ms-windows.programmer.tools.winsock
Subject: Winsock Programmer's FAQ (updated 1999.06.27)
Date: 19 Jul 1999 16:28:53 GMT
Message-ID: <7mvjo5$ctu$1@macaw.cyberport.com>
Summary: Announcement for the major Winsock programming newsgroups' FAQ.

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>

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.

Rate this FAQ

Vote

Related questions and answers



[ By Archive-name | By Author | By Category | By Newsgroup ]
[ Home | Latest Updates | Archive Stats | Search | Usenet References | Help ]


Send corrections/additions to the FAQ Maintainer:
Warren Young <tangent@cyberport.com>

Last Update July 06 2008 @ 00:14 AM

© 2008 FAQS.ORG. All rights reserved.