Socket.GetSocketOption 方法

定義

傳回 Socket 選項值。

多載

GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

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

GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

以陣列傳回指定 Socket 選項的值。

GetSocketOption(SocketOptionLevel, SocketOptionName)

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

GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

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

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

C#
public void GetSocketOption (System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName, byte[] optionValue);

參數

optionLevel
SocketOptionLevel

其中一個 SocketOptionLevel 值。

optionName
SocketOptionName

其中一個 SocketOptionName 值。

optionValue
Byte[]

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

例外狀況

嘗試存取通訊端時發生錯誤。

-或-

在 .NET Compact Framework 應用程式中,Windows CE 的預設緩衝區空間設為 32768 個位元組。 您可以呼叫 SetSocketOption,以變更每個通訊端緩衝區空間。

範例

下列程式代碼範例會擷 LingerOption 取 和 Send 逾時值,並將其顯示至主控台。

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();

備註

Socket 選項會決定目前 Socket的行為。 成功完成這個方法時,參數所 optionValue 指定的數位會包含指定 Socket 選項的值。

當陣列的 optionValue 長度小於儲存指定 Socket 選項值所需的位元組數目時, GetSocketOption 將會擲回 SocketException。 如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。 取得此程式代碼之後,請參閱 Windows Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。 針對布爾值或整數所代表的任何套接字,請使用這個多載。

備註

在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤

另請參閱

適用於

.NET 9 和其他版本
產品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1

GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

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

以陣列傳回指定 Socket 選項的值。

C#
public byte[] GetSocketOption (System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName, int optionLength);

參數

optionLevel
SocketOptionLevel

其中一個 SocketOptionLevel 值。

optionName
SocketOptionName

其中一個 SocketOptionName 值。

optionLength
Int32

要限制的傳回值長度,以位元組為單位。

傳回

Byte[]

Byte 型別的陣列,包含通訊端選項值。

例外狀況

嘗試存取通訊端時發生錯誤。

-或-

在 .NET Compact Framework 應用程式中,Windows CE 的預設緩衝區空間設為 32768 個位元組。 您可以呼叫 SetSocketOption,以變更每個通訊端緩衝區空間。

範例

下列程式代碼範例會擷 LingerOption 取 和 Send 逾時值,並將其顯示至主控台。

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();

備註

參數 optionLength 會設定傳回位元組陣組的大小上限。 如果選項值需要較少的位元組,數位只會包含該多位元組。 如果選項值需要更多位元組, GetSocketOption 會擲回 SocketException。 針對布爾值或整數所代表的任何套接字,請使用這個多載。

備註

如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。 取得此程式代碼之後,請參閱 Windows Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。

備註

在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤

另請參閱

適用於

.NET 9 和其他版本
產品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1

GetSocketOption(SocketOptionLevel, SocketOptionName)

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

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

C#
public object? GetSocketOption (System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName);
C#
public object GetSocketOption (System.Net.Sockets.SocketOptionLevel optionLevel, System.Net.Sockets.SocketOptionName optionName);

參數

optionLevel
SocketOptionLevel

其中一個 SocketOptionLevel 值。

optionName
SocketOptionName

其中一個 SocketOptionName 值。

傳回

表示選項值的物件。 當 optionName 參數設為 Linger 時,傳回值將會是 LingerOption 類別的執行個體。 當 optionName 設為 AddMembershipDropMembership 時,傳回值將會是 MulticastOption 類別的執行個體。 當 optionName 是其他的任何值時,傳回的值則是一個整數。

例外狀況

嘗試存取通訊端時發生錯誤。

-或-

optionName 設定為不支援的值 MaxConnections

範例

下列程式代碼範例會擷 LingerOption 取 和 Send 逾時值,並將其顯示至主控台。

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();

備註

Socket 選項會決定目前 Socket的行為。 使用此多載來取得 LingerAddMembershipDropMembershipSocket 選項。 Linger針對 選項,請使用 Socket 參數optionLevel。 針對 AddMembershipDropMembership,請使用 IP。 如果您想要設定上述任何選項的值,請使用 SetSocketOption 方法。

備註

如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。 取得此程式代碼之後,請參閱 Windows Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。

備註

在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤

另請參閱

適用於

.NET 9 和其他版本
產品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1