指定した Socket オプションの値を配列で返します。
Overloads Public Function GetSocketOption( _
ByVal optionLevel As SocketOptionLevel, _ ByVal optionName As SocketOptionName, _ ByVal optionLength As Integer _) As Byte()
[C#]
public byte[] GetSocketOption(SocketOptionLeveloptionLevel,SocketOptionNameoptionName,intoptionLength);
[C++]
public: unsigned char GetSocketOption(SocketOptionLeveloptionLevel,SocketOptionNameoptionName,intoptionLength) __gc[];
[JScript]
public function GetSocketOption(
optionLevel : SocketOptionLevel,optionName : SocketOptionName,optionLength : int) : Byte[];
パラメータ
- optionLevel
SocketOptionLevel 値の 1 つ。 - optionName
SocketOptionName 値の 1 つ。 - optionLength
予期される戻り値のバイト単位の長さ。
戻り値
ソケット オプションの値を格納している Byte 型の配列。
例外
例外の種類 | 条件 |
---|---|
SocketException | ソケットへのアクセスを試みているときにエラーが発生しました。詳細については「解説」を参照してください。 |
ObjectDisposedException | Socket は閉じられています。 |
解説
optionLength パラメータは返されるバイト配列の最大サイズを設定します。オブション値が要求するバイト数が小さい場合、配列はそのバイト数だけを格納します。オプション値がより大きなバイト数を要求している場合、 GetSocketOption は SocketException をスローします。このオーバーロードは、ブール値または整数値で表されたソケットに対して使用します。
メモ 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