次の方法で共有


Socket コンストラクター

定義

Socket クラスの新しいインスタンスを初期化します。

オーバーロード

名前 説明
Socket(SafeSocketHandle)

指定したソケット ハンドルの Socket クラスの新しいインスタンスを初期化します。

Socket(SocketInformation)

DuplicateAndClose(Int32)から返された指定した値を使用して、Socket クラスの新しいインスタンスを初期化します。

Socket(SocketType, ProtocolType)

指定したソケットの種類とプロトコルを使用して、 Socket クラスの新しいインスタンスを初期化します。 オペレーティング システムが IPv6 をサポートしている場合、このコンストラクターはデュアル モード ソケットを作成します。それ以外の場合は、IPv4 ソケットが作成されます。

Socket(AddressFamily, SocketType, ProtocolType)

指定したアドレス ファミリ、ソケットの種類、プロトコルを使用して、 Socket クラスの新しいインスタンスを初期化します。

Socket(SafeSocketHandle)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

指定したソケット ハンドルの Socket クラスの新しいインスタンスを初期化します。

public:
 Socket(System::Net::Sockets::SafeSocketHandle ^ handle);
public Socket(System.Net.Sockets.SafeSocketHandle handle);
new System.Net.Sockets.Socket : System.Net.Sockets.SafeSocketHandle -> System.Net.Sockets.Socket
Public Sub New (handle As SafeSocketHandle)

パラメーター

handle
SafeSocketHandle

Socket オブジェクトがカプセル化するソケットのソケット ハンドル。

例外

handlenullです。

handle が無効です。

handle がソケットではないか、ソケットに関する情報にアクセスできませんでした。

注釈

このメソッドは、指定されたSafeSocketHandleから収集されたデータをSocket インスタンスに設定します。 オペレーティング システムによって、ソケット ハンドルまたはファイル記述子のプロパティと構成を照会するためのさまざまなレベルのサポートが提供されます。 結果として得られる Socket インスタンス上のパブリック API の一部は、 ProtocolTypeBlockingなどのオペレーティング システムによって異なる場合があります。

適用対象

Socket(SocketInformation)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

DuplicateAndClose(Int32)から返された指定した値を使用して、Socket クラスの新しいインスタンスを初期化します。

public:
 Socket(System::Net::Sockets::SocketInformation socketInformation);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public Socket(System.Net.Sockets.SocketInformation socketInformation);
public Socket(System.Net.Sockets.SocketInformation socketInformation);
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
new System.Net.Sockets.Socket : System.Net.Sockets.SocketInformation -> System.Net.Sockets.Socket
new System.Net.Sockets.Socket : System.Net.Sockets.SocketInformation -> System.Net.Sockets.Socket
Public Sub New (socketInformation As SocketInformation)

パラメーター

socketInformation
SocketInformation

DuplicateAndClose(Int32)によって返されるソケット情報。

属性

注釈

各呼び出しの引数と同じバイト配列で Socket コンストラクターを複数回呼び出すと、基になるソケットが同じ複数のマネージド Socketが作成されます。 この方法は強くお勧めしません。

適用対象

Socket(SocketType, ProtocolType)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

指定したソケットの種類とプロトコルを使用して、 Socket クラスの新しいインスタンスを初期化します。 オペレーティング システムが IPv6 をサポートしている場合、このコンストラクターはデュアル モード ソケットを作成します。それ以外の場合は、IPv4 ソケットが作成されます。

public:
 Socket(System::Net::Sockets::SocketType socketType, System::Net::Sockets::ProtocolType protocolType);
public Socket(System.Net.Sockets.SocketType socketType, System.Net.Sockets.ProtocolType protocolType);
new System.Net.Sockets.Socket : System.Net.Sockets.SocketType * System.Net.Sockets.ProtocolType -> System.Net.Sockets.Socket
Public Sub New (socketType As SocketType, protocolType As ProtocolType)

パラメーター

socketType
SocketType

SocketType値の 1 つ。

protocolType
ProtocolType

ProtocolType値の 1 つ。

例外

socketTypeprotocolTypeの組み合わせにより、無効なソケットが発生します。

注釈

socketType パラメーターはSocket クラスの型を指定し、protocolType パラメーターはSocketによって使用されるプロトコルを指定します。 2 つのパラメーターは独立していません。 多くの場合、 Socket 型はプロトコルで暗黙的です。 Socket型とプロトコル型の組み合わせで無効なSocketが発生した場合、このコンストラクターはSocketExceptionをスローします。

このコンストラクターが SocketExceptionをスローする場合は、 SocketException.ErrorCode プロパティを使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については、 Windows ソケット バージョン 2 の API エラー コード のドキュメントを参照してください。

このメンバーは、アプリケーションでネットワーク トレースを有効にすると、トレース情報を出力します。 詳細については、「 .NET Framework でのネットワーク トレース」を参照してください。

適用対象

Socket(AddressFamily, SocketType, ProtocolType)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

指定したアドレス ファミリ、ソケットの種類、プロトコルを使用して、 Socket クラスの新しいインスタンスを初期化します。

public:
 Socket(System::Net::Sockets::AddressFamily addressFamily, System::Net::Sockets::SocketType socketType, System::Net::Sockets::ProtocolType protocolType);
public Socket(System.Net.Sockets.AddressFamily addressFamily, System.Net.Sockets.SocketType socketType, System.Net.Sockets.ProtocolType protocolType);
new System.Net.Sockets.Socket : System.Net.Sockets.AddressFamily * System.Net.Sockets.SocketType * System.Net.Sockets.ProtocolType -> System.Net.Sockets.Socket
Public Sub New (addressFamily As AddressFamily, socketType As SocketType, protocolType As ProtocolType)

パラメーター

addressFamily
AddressFamily

AddressFamily値の 1 つ。

socketType
SocketType

SocketType値の 1 つ。

protocolType
ProtocolType

ProtocolType値の 1 つ。

例外

addressFamilysocketType、およびprotocolTypeの組み合わせにより、無効なソケットが発生します。

次のコード例は、 Socket クラスのインスタンスを作成する方法を示しています。

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"));
   }
 }
Imports System.Text
Imports System.IO
Imports System.Net
Imports System.Net.Sockets

 _

Public Class Sample
   
   
   Public Shared Function DoSocketGet(server As String) As String
      'Set up variables and String to write to the server.
    Dim ASCII As Encoding = Encoding.ASCII
    Dim [Get] As String = "GET / HTTP/1.1" + ControlChars.Lf + ControlChars.NewLine + "Host: " + server + ControlChars.Lf + ControlChars.NewLine + "Connection: Close" + ControlChars.Lf + ControlChars.NewLine + ControlChars.Lf + ControlChars.NewLine
    Dim ByteGet As [Byte]() = ASCII.GetBytes([Get])
    Dim RecvBytes(256) As [Byte]
    Dim strRetPage As [String] = Nothing


      
      ' 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.
         Dim s As Socket = Nothing
         Dim hostEndPoint As IPEndPoint
         Dim hostAddress As IPAddress = Nothing
         Dim conPort As Integer = 80
         
         ' Get DNS host information.
         Dim hostInfo As IPHostEntry = Dns.Resolve(server)
         ' Get the DNS IP addresses associated with the host.
         Dim IPaddresses As IPAddress() = hostInfo.AddressList
         
         ' Evaluate the socket and receiving host IPAddress and IPEndPoint. 
      Dim index As Integer = 0
      For index = 0 To IPaddresses.Length - 1
        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 Not s.Connected Then
          ' Connection failed, try next IPaddress.
          strRetPage = "Unable to connect to host"
          s = Nothing
          GoTo ContinueFor1
        End If


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


ContinueFor1:
      Next index  ' End of the for loop.
      



      ' Receive the host home page content and loop until all the data is received.

      'Dim bytes As Int32 = s.Receive(RecvBytes, RecvBytes.Length, 0)
      Dim bytes As Int32 = s.Receive(RecvBytes, RecvBytes.Length, 0)

      strRetPage = "Default HTML page on " + server + ":\r\n"
      strRetPage = "Default HTML page on " + server + ":" + ControlChars.Lf + ControlChars.NewLine

      Dim i As Integer

      While bytes > 0

        bytes = s.Receive(RecvBytes, RecvBytes.Length, 0)

        strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes)

      End While


      ' End of the try block.
    Catch e As SocketException
         Console.WriteLine("SocketException caught!!!")
         Console.WriteLine(("Source : " + e.Source))
         Console.WriteLine(("Message : " + e.Message))
      Catch e As ArgumentNullException
         Console.WriteLine("ArgumentNullException caught!!!")
         Console.WriteLine(("Source : " + e.Source))
         Console.WriteLine(("Message : " + e.Message))
      Catch e As NullReferenceException
         Console.WriteLine("NullReferenceException caught!!!")
         Console.WriteLine(("Source : " + e.Source))
         Console.WriteLine(("Message : " + e.Message))
      Catch e As Exception
         Console.WriteLine("Exception caught!!!")
         Console.WriteLine(("Source : " + e.Source))
         Console.WriteLine(("Message : " + e.Message))
      End Try
      
      Return strRetPage
   End Function 'DoSocketGet
    
   Public Shared Sub Main()
    Console.WriteLine(DoSocketGet("localhost"))
   End Sub
End Class

注釈

addressFamily パラメーターは、Socket クラスで使用されるアドレス指定スキームを指定し、socketType パラメーターはSocket クラスの型を指定し、protocolType パラメーターはSocketによって使用されるプロトコルを指定します。 3 つのパラメーターは独立していません。 一部のアドレス ファミリでは、使用できるプロトコルが制限されており、多くの場合、プロトコルでは Socket 型が暗黙的です。 アドレス ファミリ、 Socket 型、プロトコル型の組み合わせで無効な Socketが発生した場合、このコンストラクターは SocketExceptionをスローします。

このコンストラクターが SocketExceptionをスローする場合は、 SocketException.ErrorCode プロパティを使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については、 Windows ソケット バージョン 2 の API エラー コード のドキュメントを参照してください。

このメンバーは、アプリケーションでネットワーク トレースを有効にすると、トレース情報を出力します。 詳細については、「 .NET Framework でのネットワーク トレース」を参照してください。

こちらもご覧ください

適用対象