共用方式為


Socket.GetSocketOption 方法

定義

回傳選擇權的價值 Socket

多載

名稱 Description
GetSocketOption(SocketOptionLevel, SocketOptionName)

回傳指定 Socket 選項的值,以物件表示。

GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

回傳指定的 Socket 選項設定,以位元組陣列表示。

GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

回傳指定 Socket 選項的值,並以陣列形式呈現。

GetSocketOption(SocketOptionLevel, SocketOptionName)

來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs

回傳指定 Socket 選項的值,以物件表示。

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);
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 價值。

optionName
SocketOptionName

這是其中一項 SocketOptionName 價值。

傳回

一個代表選擇權價值的物件。 當參數 optionName 設為 時 Linger ,回傳值 是該 LingerOption 類別的實例。 當 optionName 設為 AddMembershipDropMembership時,回傳值即為該類別的 MulticastOption 實例。 當 optionName 是任意其他值時,回傳值為整數。

例外狀況

嘗試存取該套接字時發生錯誤。

-或-

optionName 設定為不支援值 MaxConnections

該店 Socket 已經關閉。

範例

以下程式碼範例取 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
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的行為。 利用這個過載來取得 LingerAddMembershipDropMembershipSocket 選項。 選項 Linger 中,使用 Socket 參數 optionLevel 。 對於 AddMembershipDropMembership和 ,使用 IP。 如果你想設定上述選項的價值,請使用該 SetSocketOption 方法。

備註

如果你收到 SocketException,請使用該 SocketException.ErrorCode 屬性取得特定的錯誤代碼。 取得此程式碼後,請參閱 Windows Sockets 版本 2 API 錯誤代碼 文件,以獲得錯誤的詳細說明。

備註

當您在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 欲了解更多資訊,請參閱 .NET Framework 中的網路追蹤

另請參閱

適用於

GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs

回傳指定的 Socket 選項設定,以位元組陣列表示。

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 價值。

optionName
SocketOptionName

這是其中一項 SocketOptionName 價值。

optionValue
Byte[]

一個型別 Byte 的陣列,將接收選項設定。

例外狀況

嘗試存取該套接字時發生錯誤。

-或-

在 .NET Compact Framework 應用程式中,Windows CE 預設緩衝區空間設定為 32768 位元組。 你可以透過呼叫 SetSocketOption來更改每個 socket 的緩衝區空間。

該店 Socket 已經關閉。

範例

以下程式碼範例取 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
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的行為。 當此方法成功完成後,參數 optionValue 指定的陣列會包含指定 Socket 選項的值。

當陣列長度 optionValue 小於儲存指定 Socket 選項值所需的位元組數時, GetSocketOption 會拋出一個 SocketException。 如果你收到 SocketException,請使用該 SocketException.ErrorCode 屬性取得特定的錯誤代碼。 取得此程式碼後,請參閱 Windows Sockets 版本 2 API 錯誤代碼 文件,以獲得錯誤的詳細說明。 對於任何以布林值或整數表示的套接字,都可以使用這個超載。

備註

當您在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 欲了解更多資訊,請參閱 .NET Framework 中的網路追蹤

另請參閱

適用於

GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs

回傳指定 Socket 選項的值,並以陣列形式呈現。

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 價值。

optionName
SocketOptionName

這是其中一項 SocketOptionName 價值。

optionLength
Int32

期望回傳值的長度(以位元組為單位)。

傳回

Byte[]

一個型別 Byte 為 的陣列,包含套接字選項的值。

例外狀況

嘗試存取該套接字時發生錯誤。

-或-

在 .NET Compact Framework 應用程式中,Windows CE 預設緩衝區空間設定為 32768 位元組。 你可以透過呼叫 SetSocketOption來更改每個 socket 的緩衝區空間。

該店 Socket 已經關閉。

範例

以下程式碼範例取 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
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 設定回傳位元組陣列的最大大小。 若選項值需要較少位元組,陣列將只包含該數位元組。 若選項值需要更多位元組, GetSocketOption 則會拋出 SocketException。 對於任何以布林值或整數表示的套接字,都可以使用這個超載。

備註

如果你收到 SocketException,請使用該 SocketException.ErrorCode 屬性取得特定的錯誤代碼。 取得此程式碼後,請參閱 Windows Sockets 版本 2 API 錯誤代碼 文件,以獲得錯誤的詳細說明。

備註

當您在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 欲了解更多資訊,請參閱 .NET Framework 中的網路追蹤

另請參閱

適用於