Socket.GetSocketOption メソッド

定義

Socket オプションの値を返します。Returns the value of a Socket option.

オーバーロード

GetSocketOption(SocketOptionLevel, SocketOptionName)

指定した Socket オプションの値をオブジェクトとして返します。Returns the value of a specified Socket option, represented as an object.

GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

指定した Socket オプション設定をバイト配列として返します。Returns the specified Socket option setting, represented as a byte array.

GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

指定した Socket オプションの値を配列で返します。Returns the value of the specified Socket option in an array.

GetSocketOption(SocketOptionLevel, SocketOptionName)

指定した Socket オプションの値をオブジェクトとして返します。Returns the value of a specified Socket option, represented as an object.

public:
 System::Object ^ GetSocketOption(System::Net::Sockets::SocketOptionLevel optionLevel, System::Net::Sockets::SocketOptionName optionName);
public object GetSocketOption (System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName);
member this.GetSocketOption : System.Net.Sockets.SocketOptionLevel * System.Net.Sockets.SocketOptionName -> obj
Public Function GetSocketOption (optionLevel As SocketOptionLevel, optionName As SocketOptionName) As Object

パラメーター

optionLevel
SocketOptionLevel

SocketOptionLevel 値のいずれか 1 つ。One of the SocketOptionLevel values.

optionName
SocketOptionName

SocketOptionName 値のいずれか。One of the SocketOptionName values.

戻り値

オプションの値を表すオブジェクト。An object that represents the value of the option. optionName パラメーターを Linger に設定した場合、戻り値は LingerOption クラスのインスタンスです。When the optionName parameter is set to Linger the return value is an instance of the LingerOption class. optionNameAddMembership または DropMembership に設定した場合、戻り値は MulticastOption クラスのインスタンスです。When optionName is set to AddMembership or DropMembership, the return value is an instance of the MulticastOption class. optionName が他の値の場合、戻り値は整数です。When optionName is any other value, the return value is an integer.

例外

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.

- または --or- optionName が、サポートされていない値 MaxConnections に設定されました。optionName was set to the unsupported value MaxConnections.

Socket が閉じられました。The Socket has been closed.

次のコード例では、LingerOptionSend のタイムアウト値を取得し、コンソールに表示します。The following code example retrieves the LingerOption and Send time-out values and displays them to the console.

Console::Write(  "This application will timeout if Send does not return within " );
Console::WriteLine( Encoding::ASCII->GetString( s->GetSocketOption( SocketOptionLevel::Socket, SocketOptionName::SendTimeout, 4 ) ) );

// Blocks until send returns.
int i = s->Send( msg );

// Blocks until read returns.
array<Byte>^ bytes = gcnew array<Byte>(1024);

s->Receive( bytes );

//Displays to the screen.
Console::WriteLine( Encoding::ASCII->GetString( bytes ) );
s->Shutdown( SocketShutdown::Both );
Console::Write(  "If data remains to be sent, this application will stay open for " );
Console::WriteLine( safe_cast<LingerOption^>(s->GetSocketOption( SocketOptionLevel::Socket, SocketOptionName::Linger ))->LingerTime.ToString() );
s->Close();
Console.WriteLine ("This application will timeout if Send does not return within " + Encoding.ASCII.GetString (s.GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 4)));

// blocks until send returns
int i = s.Send (msg);

// blocks until read returns
byte[] bytes = new byte[1024];

s.Receive (bytes);

//Display to the screen
Console.WriteLine (Encoding.ASCII.GetString (bytes));
s.Shutdown (SocketShutdown.Both);
Console.WriteLine ("If data remains to be sent, this application will stay open for " + ((LingerOption)s.GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Linger)).LingerTime.ToString ());
s.Close ();
    Console.WriteLine(("This application will timeout if Send does not return within " + Encoding.ASCII.GetString(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 4))))
    ' blocks until send returns
    Dim i As Integer = s.Send(msg)

    ' blocks until read returns
    Dim bytes(1024) As Byte
    s.Receive(bytes)

    'Display to the screen
    Console.WriteLine(Encoding.ASCII.GetString(bytes))
    s.Shutdown(SocketShutdown.Both)

    Console.WriteLine(("If data remains to be sent, this application will stay open for " + CType(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger), LingerOption).LingerTime.ToString()))
    s.Close()
End Sub

注釈

現在の Socketの動作は、Socket オプションによって決まります。Socket options determine the behavior of the current Socket. このオーバーロードを使用して、Socket オプションの LingerAddMembership、および DropMembershipを取得します。Use this overload to get the Linger, AddMembership, and DropMembershipSocket options. Linger オプションでは、optionLevel パラメーターに Socket を使用します。For the Linger option, use Socket for the optionLevel parameter. AddMembershipDropMembershipについては、IPを使用します。For AddMembership and DropMembership, use IP. 上記のオプションのいずれかの値を設定する場合は、SetSocketOption メソッドを使用します。If you want to set the value of any of the options listed above, use the SetSocketOption method.

注意

SocketExceptionを受け取った場合は、SocketException.ErrorCode プロパティを使用して、特定のエラーコードを取得します。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコードのドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、「 .NET Framework のネットワークトレース」を参照してください。For more information, see Network Tracing in the .NET Framework.

こちらもご覧ください

GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

指定した Socket オプション設定をバイト配列として返します。Returns the specified Socket option setting, represented as a byte array.

public:
 void GetSocketOption(System::Net::Sockets::SocketOptionLevel optionLevel, System::Net::Sockets::SocketOptionName optionName, cli::array <System::Byte> ^ optionValue);
public void GetSocketOption (System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName, byte[] optionValue);
member this.GetSocketOption : System.Net.Sockets.SocketOptionLevel * System.Net.Sockets.SocketOptionName * byte[] -> unit
Public Sub GetSocketOption (optionLevel As SocketOptionLevel, optionName As SocketOptionName, optionValue As Byte())

パラメーター

optionLevel
SocketOptionLevel

SocketOptionLevel 値のいずれか。One of the SocketOptionLevel values.

optionName
SocketOptionName

SocketOptionName 値のいずれか。One of the SocketOptionName values.

optionValue
Byte[]

オプション設定を受信する Byte 型の配列。An array of type Byte that is to receive the option setting.

例外

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.

- または --or- .NET Compact Framework アプリケーションでは、Windows CE の既定のバッファー領域は 32768 バイトに設定されます。In .NET Compact Framework applications, the Windows CE default buffer space is set to 32768 bytes. ソケットごとのバッファー領域は、SetSocketOption を呼び出して変更できます。You can change the per socket buffer space by calling SetSocketOption.

Socket が閉じられました。The Socket has been closed.

次のコード例では、LingerOptionSend のタイムアウト値を取得し、コンソールに表示します。The following code example retrieves the LingerOption and Send time-out values and displays them to the console.

Console::Write(  "This application will timeout if Send does not return within " );
Console::WriteLine( Encoding::ASCII->GetString( s->GetSocketOption( SocketOptionLevel::Socket, SocketOptionName::SendTimeout, 4 ) ) );

// Blocks until send returns.
int i = s->Send( msg );

// Blocks until read returns.
array<Byte>^ bytes = gcnew array<Byte>(1024);

s->Receive( bytes );

//Displays to the screen.
Console::WriteLine( Encoding::ASCII->GetString( bytes ) );
s->Shutdown( SocketShutdown::Both );
Console::Write(  "If data remains to be sent, this application will stay open for " );
Console::WriteLine( safe_cast<LingerOption^>(s->GetSocketOption( SocketOptionLevel::Socket, SocketOptionName::Linger ))->LingerTime.ToString() );
s->Close();
Console.WriteLine ("This application will timeout if Send does not return within " + Encoding.ASCII.GetString (s.GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 4)));

// blocks until send returns
int i = s.Send (msg);

// blocks until read returns
byte[] bytes = new byte[1024];

s.Receive (bytes);

//Display to the screen
Console.WriteLine (Encoding.ASCII.GetString (bytes));
s.Shutdown (SocketShutdown.Both);
Console.WriteLine ("If data remains to be sent, this application will stay open for " + ((LingerOption)s.GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Linger)).LingerTime.ToString ());
s.Close ();
    Console.WriteLine(("This application will timeout if Send does not return within " + Encoding.ASCII.GetString(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 4))))
    ' blocks until send returns
    Dim i As Integer = s.Send(msg)

    ' blocks until read returns
    Dim bytes(1024) As Byte
    s.Receive(bytes)

    'Display to the screen
    Console.WriteLine(Encoding.ASCII.GetString(bytes))
    s.Shutdown(SocketShutdown.Both)

    Console.WriteLine(("If data remains to be sent, this application will stay open for " + CType(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger), LingerOption).LingerTime.ToString()))
    s.Close()
End Sub

注釈

現在の Socketの動作は、Socket オプションによって決まります。Socket options determine the behavior of the current Socket. このメソッドが正常に完了すると、optionValue パラメーターによって指定された配列に、指定された Socket オプションの値が含まれます。Upon successful completion of this method, the array specified by the optionValue parameter contains the value of the specified Socket option.

optionValue 配列の長さが、指定された Socket オプションの値を格納するために必要なバイト数よりも小さい場合、GetSocketOptionSocketExceptionをスローします。When the length of the optionValue array is smaller than the number of bytes required to store the value of the specified Socket option, GetSocketOption will throw a SocketException. SocketExceptionを受け取った場合は、SocketException.ErrorCode プロパティを使用して、特定のエラーコードを取得します。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコードのドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error. このオーバーロードは、ブール値または整数で表されるソケットに対して使用します。Use this overload for any sockets that are represented by Boolean values or integers.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、「 .NET Framework のネットワークトレース」を参照してください。For more information, see Network Tracing in the .NET Framework.

こちらもご覧ください

GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

指定した Socket オプションの値を配列で返します。Returns the value of the specified Socket option in an array.

public:
 cli::array <System::Byte> ^ GetSocketOption(System::Net::Sockets::SocketOptionLevel optionLevel, System::Net::Sockets::SocketOptionName optionName, int optionLength);
public byte[] GetSocketOption (System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName, int optionLength);
member this.GetSocketOption : System.Net.Sockets.SocketOptionLevel * System.Net.Sockets.SocketOptionName * int -> byte[]
Public Function GetSocketOption (optionLevel As SocketOptionLevel, optionName As SocketOptionName, optionLength As Integer) As Byte()

パラメーター

optionLevel
SocketOptionLevel

SocketOptionLevel 値のいずれか 1 つ。One of the SocketOptionLevel values.

optionName
SocketOptionName

SocketOptionName 値のいずれか。One of the SocketOptionName values.

optionLength
Int32

予期される戻り値のバイト単位の長さ。The length, in bytes, of the expected return value.

戻り値

Byte[]

ソケット オプションの値を格納している Byte 型の配列。An array of type Byte that contains the value of the socket option.

例外

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.

- または --or- .NET Compact Framework アプリケーションでは、Windows CE の既定のバッファー領域は 32768 バイトに設定されます。In .NET Compact Framework applications, the Windows CE default buffer space is set to 32768 bytes. ソケットごとのバッファー領域は、SetSocketOption を呼び出して変更できます。You can change the per socket buffer space by calling SetSocketOption.

Socket が閉じられました。The Socket has been closed.

次のコード例では、LingerOptionSend のタイムアウト値を取得し、コンソールに表示します。The following code example retrieves the LingerOption and Send time-out values and displays them to the console.

Console::Write(  "This application will timeout if Send does not return within " );
Console::WriteLine( Encoding::ASCII->GetString( s->GetSocketOption( SocketOptionLevel::Socket, SocketOptionName::SendTimeout, 4 ) ) );

// Blocks until send returns.
int i = s->Send( msg );

// Blocks until read returns.
array<Byte>^ bytes = gcnew array<Byte>(1024);

s->Receive( bytes );

//Displays to the screen.
Console::WriteLine( Encoding::ASCII->GetString( bytes ) );
s->Shutdown( SocketShutdown::Both );
Console::Write(  "If data remains to be sent, this application will stay open for " );
Console::WriteLine( safe_cast<LingerOption^>(s->GetSocketOption( SocketOptionLevel::Socket, SocketOptionName::Linger ))->LingerTime.ToString() );
s->Close();
Console.WriteLine ("This application will timeout if Send does not return within " + Encoding.ASCII.GetString (s.GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 4)));

// blocks until send returns
int i = s.Send (msg);

// blocks until read returns
byte[] bytes = new byte[1024];

s.Receive (bytes);

//Display to the screen
Console.WriteLine (Encoding.ASCII.GetString (bytes));
s.Shutdown (SocketShutdown.Both);
Console.WriteLine ("If data remains to be sent, this application will stay open for " + ((LingerOption)s.GetSocketOption (SocketOptionLevel.Socket, SocketOptionName.Linger)).LingerTime.ToString ());
s.Close ();
    Console.WriteLine(("This application will timeout if Send does not return within " + Encoding.ASCII.GetString(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 4))))
    ' blocks until send returns
    Dim i As Integer = s.Send(msg)

    ' blocks until read returns
    Dim bytes(1024) As Byte
    s.Receive(bytes)

    'Display to the screen
    Console.WriteLine(Encoding.ASCII.GetString(bytes))
    s.Shutdown(SocketShutdown.Both)

    Console.WriteLine(("If data remains to be sent, this application will stay open for " + CType(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger), LingerOption).LingerTime.ToString()))
    s.Close()
End Sub

注釈

optionLength パラメーターは、返されるバイト配列の最大サイズを設定します。The optionLength parameter sets the maximum size of the returned byte array. オプションの値が必要なバイト数が少なくなる場合、配列にはその数のバイトだけが格納されます。If the option value requires fewer bytes, the array will contain only that many bytes. オプションの値により多くのバイトが必要な場合は、GetSocketOption によって SocketExceptionがスローされます。If the option value requires more bytes, GetSocketOption will throw a SocketException. このオーバーロードは、ブール値または整数で表されるソケットに対して使用します。Use this overload for any sockets that are represented by Boolean values or integers.

注意

SocketExceptionを受け取った場合は、SocketException.ErrorCode プロパティを使用して、特定のエラーコードを取得します。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコードのドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、「 .NET Framework のネットワークトレース」を参照してください。For more information, see Network Tracing in the .NET Framework.

こちらもご覧ください

適用対象