WSAStartup (ws2_32)
Last changed: 123.211.210.156

.

jagadheesh kamalesh

Summary
Initializes the Windows Sockets API for use by an application. Ensure WSACleanup() is called for every successful call to WSAStartup().

C# Signature:

[DllImport("ws2_32.dll", CharSet = CharSet.Auto, SetLastError=true)]
static extern Int32 WSAStartup(Int16 wVersionRequested, ref WSAData wsaData);

VB Signature:

Declare Function WSAStartup Lib "ws2_32.dll" (ByVal versionRequested As Int16, infoBuffer As WSAData) As Integer

User-Defined Types:

WSAData will need to be defined, possibly in the class that calls WSAStartup.

Notes:

The version to be requested should be 2.0 or 2.2.

Tips & Tricks:

Please add some!

Sample Code:

C# Code Sample:

    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    class Class1
    {
         [StructLayout(LayoutKind.Sequential)]
         public struct WSAData
         {
             const int WSADESCRIPTION_LEN=256;
             const int WSASYS_STATUS_LEN=128;

             public Int16 wVersion;
             public Int16 wHighVersion;  
             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = WSADESCRIPTION_LEN + 1)]
             public String szDescription;  
             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = WSASYS_STATUS_LEN + 1)]
             public String szSystemStatus;
             public Int16 iMaxSockets;  
             public Int16 iMaxUdpDg;  
             public IntPtr lpVendorInfo;
         }
         public const int SUCCESS = 0;
         public const int HIGH_VERSION = 2;
         public const int LOW_VERSION = 2;
         public const short WORD_VERSION = HIGH_VERSION*256+LOW_VERSION;

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            WSAData data = new WSAData();
            int result = 0;

               data.wHighVersion=HIGH_VERSION;
               data.wVersion=LOW_VERSION;

            result = WSAStartup(WORD_VERSION, ref data);
            if (result == SUCCESS)
            {
                Console.WriteLine(data.Description);
                WSACleanup();
            }
            Console.ReadLine();
        }
    }

}

VB Code Sample:

Module Module1

    Public Const SUCCESS As Integer = 0
    Public Const HIGH_VERSION As Integer = 2
    Public Const LOW_VERSION As Integer = 2
    Public Const WORD_VERSION As Short = 36

    Public Structure WSAData
    Public wVersion As Short
    Public wHighVersion As Short
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=257)> _
    Public Description As String
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=129)> _
    Public Status As String
    Public MaxSockets As Integer
    Public MaxUdpDg As Integer
    Public vendorInfoPointer As IntPtr
    End Structure

    Declare Function WSAStartup Lib "ws2_32.dll" ( _
    ByVal versionRequested As Int16, _
    ByVal infoBuffer As WSAData) As Integer

    Declare Function WSACleanup Lib "ws2_32.dll" () As Integer

    Sub Main()

    Dim resultCode As Integer = 0
    Dim data As WSAData

    data = New WSAData
    data.wHighVersion = HIGH_VERSION
    data.wVersion = LOW_VERSION

    resultCode = WSAStartup(WORD_VERSION, data)
    If (resultCode = SUCCESS) Then
        WSACleanup()
    End If

    End Sub

End Module

Alternative Managed API:

Do you know one? Please contribute it!

Documentation
WSAStartup on MSDN