次の方法で共有


Socket.GetSocketOption メソッド (SocketOptionLevel, SocketOptionName)

指定した Socket オプションの値をオブジェクトとして返します。

Overloads Public Function GetSocketOption( _
   ByVal optionLevel As SocketOptionLevel, _   ByVal optionName As SocketOptionName _) As Object
[C#]
public object GetSocketOption(SocketOptionLeveloptionLevel,SocketOptionNameoptionName);
[C++]
public: Object* GetSocketOption(SocketOptionLeveloptionLevel,SocketOptionNameoptionName);
[JScript]
public function GetSocketOption(
   optionLevel : SocketOptionLevel,optionName : SocketOptionName) : Object;

パラメータ

戻り値

オプションの値を表すオブジェクト。 optionName パラメータを Linger に設定した場合、戻り値は LingerOption クラスのインスタンスです。 optionNameAddMembership または DropMembership に設定した場合、戻り値は MulticastOption クラスのインスタンスです。 optionName が他の値の場合、戻り値は整数です。

例外

例外の種類 条件
SocketException ソケットへのアクセスを試みているときにエラーが発生しました。詳細については、「解説」を参照してください。
ObjectDisposedException Socket は閉じられています。

解説

Socket オプションは、現在の Socket の動作を決定します。このオーバーロードを使用して、 Linger オプション、 AddMembership オプション、および DropMembership Socket オプションを取得します。 Linger オプションの場合は、 optionLevel パラメータで Socket を使用します。 AddMembership オプションおよび DropMembership オプションについては、 IP を使用します。これらのオプションのいずれかの値を設定する必要がある場合は、 SetSocketOption メソッドを使用します。

メモ    SocketException が発生した場合は、 SocketException.ErrorCode を使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのマニュアルから、エラーの詳細情報を確認できます。これは MSDN から入手できます。

使用例

[Visual Basic, C#, C++] LingerOption タイムアウト値と Send タイムアウト値を取得し、コンソールに表示する例を次に示します。

 
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 'SetSocketOptions

[C#] 
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 ();

[C++] 
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.
Byte bytes[] = new 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(__box(__try_cast<LingerOption *> (s->GetSocketOption(SocketOptionLevel::Socket, 
    SocketOptionName::Linger))->LingerTime)->ToString());
s->Close();

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

参照

Socket クラス | Socket メンバ | System.Net.Sockets 名前空間 | Socket.GetSocketOption オーバーロードの一覧 | SetSocketOption | SocketOptionName | SocketOptionLevel