語言

StreamSocketListener 類別

定義

支援使用 TCP 串流接字或藍牙 RFCOMM 監聽進來的網路連線。

public ref class StreamSocketListener sealed : IClosable
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class StreamSocketListener final : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
class StreamSocketListener final : IClosable
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class StreamSocketListener : System.IDisposable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
public sealed class StreamSocketListener : System.IDisposable
function StreamSocketListener()
Public NotInheritable Class StreamSocketListener
Implements IDisposable
繼承
Object Platform::Object IInspectable StreamSocketListener
屬性
實作

Windows 需求

規格需求 Description
裝置系列
Windows 10 (已於 10.0.10240.0 引進)
API contract
Windows.Foundation.UniversalApiContract (已於 v1.0 引進)
應用程式功能
bluetooth.rfcomm internetClientServer privateNetworkClientServer

備註

StreamSocketListener 類別支援透過串流套接字監聽進來的網路連線並接受該連線。

典型的操作順序如下:

SocketProtectionLevel 枚舉允許伺服器在使用 StreamSocketListener 物件透過藍牙監聽並綁定套接字時,控制與用戶端的協定協商。 當 StreamSocketListener 物件透過藍牙使用時,支援的 SocketProtectionLevel 值為 PlainSocket、 BluetoothEncryptionAllowNullAuthentication 或 BluetoothEncryptionWithAuthentication。 當使用 StreamSocketListener 物件來監聽並綁定非藍牙的 socket 時,唯一支援的 SocketProtectionLevel 值是 PlainSocket。

若要使用 StreamSocketListener 搭配藍牙,必須在應用程式清單中設定 bluetooth.rfcomm 裝置功能。 欲了解更多資訊,請參閱 「如何指定藍牙裝置功能」。

處理例外狀況

當你呼叫 StreamSocketListener 類別的非同步方法時,必須撰寫程式碼來處理異常。 例外可能因參數驗證錯誤、名稱解析失敗及網路錯誤而產生。 網路錯誤的例外(例如連線中斷、連線失敗及伺服器故障)隨時可能發生。 這些錯誤會導致拋出例外。 如果應用程式無法處理,例外可能會導致整個應用程式在執行時被終止。

Windows。Networking.Sockets 命名空間具備簡化使用套接字時處理錯誤的功能。 SocketError 類別上的 GetStatus 方法可以將例外的 HRESULT 轉換成 SocketErrorStatus 的列舉值。 這對於在應用程式中處理特定網路例外的方式很有幫助。 應用程式也可以利用例外中對參數驗證錯誤的 HRESULT 來學習導致異常的更詳細資訊。

欲了解更多可能例外及如何處理例外的資訊,請參閱 「網路應用程式中的例外處理」。

使用 StreamSocketListener 搭配藍牙

你的應用程式可以使用 StreamSocketListener 透過藍牙 RFCOMM 監聽網路連線。 藍牙網路連線使用藍牙服務ID作為連線端點,而非IP埠或服務名稱。 要監聽藍牙,你的應用程式會在 StreamSocketListener 上呼叫 BindServiceNameAsync 方法之一,並將 localServiceName 參數設為藍牙服務 ID。

若要使用 StreamSocketListener 與藍牙版的 StreamSocket ,必須在應用程式清單中設定 bluetooth.rfcomm 裝置功能。 更多資訊請參閱 Windows。Devices.Bluetooth.Rfcomm 命名空間、如何指定藍牙裝置功能,以及藍牙 Rfcomm 聊天範例。

在 Windows Server 2012 上使用 StreamSocketListener

在 Windows Server 2012 和 Windows Server 2012 R2,這是實作大部分 Windows 類別的 Windows.Networking.dll。Networking.Sockets 命名空間若未啟用 Media Foundation 功能,將無法載入。 因此,使用 StreamSocketListener 及相關 socket 類別的應用程式在 Windows 中,如果關閉 Media Foundation 功能,Networking.Sockets 命名空間將會失敗。 Windows Server 2012 或 Windows Server 2012 R2 安裝時,關閉了媒體基礎功能。

媒體基礎功能可在 Windows Server 2012 或 Windows Server 2012 R2 上啟用,使用 伺服器管理員,或透過命令提示字元或腳本輸入以下文字:

dism /online /enable-feature /featurename:ServerMediaFoundation 啟用 Media Foundation 功能後,使用者會被提示重新啟動。 電腦重新啟動後,Windows 中會建立 sockets 和 WebSockets 的類別。Networking.sockets 命名空間會如預期運作。

建構函式

名稱 Description
StreamSocketListener()

建立一個新的 StreamSocketListener 物件。

屬性

名稱 Description
Control

取得 StreamSocketListen 物件上的套接字控制資料。

Information

取得 StreamSocketListener 物件的套接字資訊。

方法

名稱 Description
BindEndpointAsync(HostName, String)

啟動 StreamSocketListener 綁定操作,連接本地主機名稱與服務名稱。

BindServiceNameAsync(String, SocketProtectionLevel, NetworkAdapter)

在 StreamSocketListener 上啟動套接字綁定操作,與指定網路介面卡上的本地服務名稱進行綁定操作,並設定指定的 SocketProtectionLevel 來設定於任何綁定套接字上。

BindServiceNameAsync(String, SocketProtectionLevel)

在 StreamSocketListener 上啟動綁定操作,綁定到一個本地服務名稱,並指定 SocketProtectionLevel 設定在任何綁定的套接字上。

BindServiceNameAsync(String)

在 StreamSocketListener 上啟動綁定操作到本地服務名稱。

CancelIOAsync()

取消對 StreamSocketListener 物件的待處理讀取與寫入。

Close()

關閉 StreamSocketListener 物件。

Dispose()

執行與釋放、釋放或重設非受控資源相關聯的應用程式定義工作。

EnableTransferOwnership(Guid, SocketActivityConnectedStandbyAction)

當系統處於連線待機狀態時,當 StreamSocketListener 的流量抵達時,能由 socket broker 觸發你的應用程式背景任務。

EnableTransferOwnership(Guid)

當 StreamSocketListener 的流量抵達時,應用程式未啟用時,能由套接程式代理觸發應用程式的背景任務。

TransferOwnership(String, SocketActivityContext)

將 StreamSocketListener 的所有權轉移給 socket 經紀服務,該服務監控 socket 活動,並在有活動時透過背景任務通知應用程式。

TransferOwnership(String)

將 StreamSocketListener 的所有權轉移給 socket 經紀服務,該服務監控 socket 活動,並在有活動時透過背景任務通知應用程式。

事件

名稱 Description
ConnectionReceived

一個表示 StreamSocketListener 物件已接收連線的事件。

適用於

另請參閱