Socket Constructors

Definition

Initializes a new instance of the Socket class.

Overloads

Socket(SafeSocketHandle)

Initializes a new instance of the Socket class for the specified socket handle.

Socket(SocketInformation)

Initializes a new instance of the Socket class using the specified value returned from DuplicateAndClose(Int32).

Socket(SocketType, ProtocolType)

Initializes a new instance of the Socket class using the specified socket type and protocol. If the operating system supports IPv6, this constructor creates a dual-mode socket; otherwise, it creates an IPv4 socket.

Socket(AddressFamily, SocketType, ProtocolType)

Initializes a new instance of the Socket class using the specified address family, socket type and protocol.

Socket(SafeSocketHandle)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Initializes a new instance of the Socket class for the specified socket handle.

public Socket (System.Net.Sockets.SafeSocketHandle handle);

Parameters

handle
SafeSocketHandle

The socket handle for the socket that the Socket object will encapsulate.

Exceptions

handle is null.

handle is invalid.

handle is not a socket or information about the socket could not be accessed.

Remarks

This method populates the Socket instance with data gathered from the supplied SafeSocketHandle. Different operating systems provide varying levels of support for querying a socket handle or file descriptor for its properties and configuration. Some of the public APIs on the resulting Socket instance may differ based on operating system, such as ProtocolType and Blocking.

Applies to

.NET 9 and other versions
Product Versions
.NET 5, 6, 7, 8, 9

Socket(SocketInformation)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Initializes a new instance of the Socket class using the specified value returned from DuplicateAndClose(Int32).

[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public Socket (System.Net.Sockets.SocketInformation socketInformation);
public Socket (System.Net.Sockets.SocketInformation socketInformation);

Parameters

socketInformation
SocketInformation

The socket information returned by DuplicateAndClose(Int32).

Attributes

Remarks

If you call the Socket constructor multiple times with the same byte array as the argument for each call, you will create multiple managed Sockets with the same underlying socket. This practice is strongly discouraged.

Applies to

.NET 9 and other versions
Product Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Socket(SocketType, ProtocolType)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Initializes a new instance of the Socket class using the specified socket type and protocol. If the operating system supports IPv6, this constructor creates a dual-mode socket; otherwise, it creates an IPv4 socket.

public Socket (System.Net.Sockets.SocketType socketType, System.Net.Sockets.ProtocolType protocolType);

Parameters

socketType
SocketType

One of the SocketType values.

protocolType
ProtocolType

One of the ProtocolType values.

Exceptions

The combination of socketType and protocolType results in an invalid socket.

Remarks

The socketType parameter specifies the type of the Socket class and the protocolType parameter specifies the protocol used by Socket. The two parameters are not independent. Often the Socket type is implicit in the protocol. If the combination of Socket type and protocol type results in an invalid Socket, this constructor throws a SocketException.

Note

If this constructor throws a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Note

This member outputs trace information when you enable network tracing in your application. For more information, see Network Tracing in .NET Framework.

Applies to

.NET 9 and other versions
Product Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Socket(AddressFamily, SocketType, ProtocolType)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

Initializes a new instance of the Socket class using the specified address family, socket type and protocol.

public Socket (System.Net.Sockets.AddressFamily addressFamily, System.Net.Sockets.SocketType socketType, System.Net.Sockets.ProtocolType protocolType);

Parameters

addressFamily
AddressFamily

One of the AddressFamily values.

socketType
SocketType

One of the SocketType values.

protocolType
ProtocolType

One of the ProtocolType values.

Exceptions

The combination of addressFamily, socketType, and protocolType results in an invalid socket.

Examples

The following code example demonstrates how to create an instance of the Socket class.

using System;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;

public class Sample
{

  public static string DoSocketGet(string server)
  {
    //Set up variables and String to write to the server.
    Encoding ASCII = Encoding.ASCII;
    string Get = "GET / HTTP/1.1\r\nHost: " + server +
                 "\r\nConnection: Close\r\n\r\n";
    Byte[] ByteGet = ASCII.GetBytes(Get);
    Byte[] RecvBytes = new Byte[256];
    String strRetPage = null;

    // IPAddress and IPEndPoint represent the endpoint that will
    //   receive the request.
    // Get first IPAddress in list return by DNS.

    try
    {

      // Define those variables to be evaluated in the next for loop and
      // then used to connect to the server. These variables are defined
      // outside the for loop to make them accessible there after.
      Socket s = null;
      IPEndPoint hostEndPoint;
      IPAddress hostAddress = null;
      int conPort = 80;

      // Get DNS host information.
      IPHostEntry hostInfo = Dns.GetHostEntry(server);
      // Get the DNS IP addresses associated with the host.
      IPAddress[] IPaddresses = hostInfo.AddressList;

      // Evaluate the socket and receiving host IPAddress and IPEndPoint.
      for (int index=0; index<IPaddresses.Length; index++)
      {
        hostAddress = IPaddresses[index];
        hostEndPoint = new IPEndPoint(hostAddress, conPort);


        // Creates the Socket to send data over a TCP connection.
        s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp );


        // Connect to the host using its IPEndPoint.
        s.Connect(hostEndPoint);

        if (!s.Connected)
        {
          // Connection failed, try next IPaddress.
          strRetPage = "Unable to connect to host";
          s = null;
          continue;
        }

        // Sent the GET request to the host.
        s.Send(ByteGet, ByteGet.Length, 0);

      } // End of the for loop.


      // Receive the host home page content and loop until all the data is received.
      Int32 bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
      strRetPage = "Default HTML page on " + server + ":\r\n";
      strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);

      while (bytes > 0)
      {
        bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
        strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);
      }

    } // End of the try block.

    catch(SocketException e)
    {
      Console.WriteLine("SocketException caught!!!");
      Console.WriteLine("Source : " + e.Source);
      Console.WriteLine("Message : " + e.Message);
    }
    catch(ArgumentNullException e)
    {
      Console.WriteLine("ArgumentNullException caught!!!");
      Console.WriteLine("Source : " + e.Source);
      Console.WriteLine("Message : " + e.Message);
    }
    catch(NullReferenceException e)
    {
      Console.WriteLine("NullReferenceException caught!!!");
      Console.WriteLine("Source : " + e.Source);
      Console.WriteLine("Message : " + e.Message);
    }
    catch(Exception e)
    {
      Console.WriteLine("Exception caught!!!");
      Console.WriteLine("Source : " + e.Source);
      Console.WriteLine("Message : " + e.Message);
    }

    return strRetPage;
}
   public static void Main()
   {
      Console.WriteLine(DoSocketGet("localhost"));
   }
 }

Remarks

The addressFamily parameter specifies the addressing scheme that the Socket class uses, the socketType parameter specifies the type of the Socket class, and the protocolType parameter specifies the protocol used by Socket. The three parameters are not independent. Some address families restrict which protocols can be used with them, and often the Socket type is implicit in the protocol. If the combination of address family, Socket type, and protocol type results in an invalid Socket, this constructor throws a SocketException.

Note

If this constructor throws a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Note

This member outputs trace information when you enable network tracing in your application. For more information, see Network Tracing in .NET Framework.

See also

Applies to

.NET 9 and other versions
Product Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0