Socket.GetSocketOption 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
回傳選擇權的價值 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 設為 AddMembership 或 DropMembership時,回傳值即為該類別的 MulticastOption 實例。 當 optionName 是任意其他值時,回傳值為整數。
例外狀況
該店 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的行為。 利用這個過載來取得 Linger、 AddMembership和 DropMembershipSocket 選項。 選項 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 價值。
例外狀況
嘗試存取該套接字時發生錯誤。
-或-
在 .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 為 的陣列,包含套接字選項的值。
例外狀況
嘗試存取該套接字時發生錯誤。
-或-
在 .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 中的網路追蹤。