StreamSocketListener 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
支援使用 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
- 繼承
- 屬性
- 實作
Windows 需求
裝置系列 |
Windows 10 (已於 10.0.10240.0 引進)
|
API contract |
Windows.Foundation.UniversalApiContract (已於 v1.0 引進)
|
應用程式功能 |
bluetooth.rfcomm
ID_CAP_NETWORKING [Windows Phone]
internetClientServer
privateNetworkClientServer
|
備註
StreamSocketListener 類別支援使用數據流套接字並接受連線來接聽連入網路連線。
作業的一般順序如下:
- 建立 StreamSocketListener。
- 使用 Control 屬性來擷取 StreamSocketListenerControl 物件,並設定所需的套接字服務品質。
- 將 ConnectionReceived 事件指派給事件處理程式。
- 呼叫 BindServiceNameAsync 或 BindEndpointAsync 方法,以系結至本機 TCP 連接埠號碼或服務名稱。 針對藍牙 RFCOMM,本機服務名稱參數是藍牙服務標識碼。
- 收到連線時,請使用 StreamSocketListenerConnectionReceivedEventArgs 物件來擷取已建立 StreamSocket 物件的 Socket 屬性。
- 使用 StreamSocket 對象來傳送和接收數據。
- 呼叫 Close 方法來停止接聽並接受連入的網路連線,並釋放與 StreamSocketListener 對象相關聯的所有 Unmanaged 資源。 收到連接時所建立的任何 StreamSocket 物件不會受到影響,而且可以視需要繼續使用。
SocketProtectionLevel 列舉可讓伺服器在使用 StreamSocketListener 物件來接聽和系結至藍牙上的套接字時,控制與客戶端的通訊協定交涉。 當 StreamSocketListener 物件透過藍牙使用時,支援的 SocketProtectionLevel 值為 PlainSocket、 BluetoothEncryptionAllowNullAuthentication 或 BluetoothEncryptionWithAuthentication。 當 StreamSocketListener 物件用來接聽和系結至不使用藍牙的套接字時,唯一支援的 SocketProtectionLevel 值為 PlainSocket。
若要搭配藍牙使用 StreamSocketListener,必須在應用程式指令清單中設定 bluetooth.rfcomm 裝置功能。 如需詳細資訊,請參閱 如何指定藍牙的裝置功能。
處理例外狀況
當您在 StreamSocketListener 類別上呼叫異步方法時,您必須撰寫程式代碼來處理例外狀況。 例外狀況可能是因為參數驗證錯誤、名稱解析失敗和網路錯誤所造成。 網路錯誤 (連線中斷、連線失敗和伺服器失敗的例外狀況,例如,隨時可能會發生) 。 這些錯誤會造成擲出例外狀況。 如果應用程式未處理,例外狀況可能會導致整個應用程式由運行時間終止。
Windows.Networking.Sockets 命名空間的功能可簡化使用套接字時的處理錯誤。 SocketError 類別上的 GetStatus 方法可以將 HRESULT 從例外狀況轉換為 SocketErrorStatus 列舉值。 這對於在您的應用程式中以不同的方式處理特定網路例外狀況時很有用。 應用程式也可以使用參數驗證錯誤例外狀況中的 HRESULT ,深入瞭解造成例外狀況之錯誤的詳細資訊。
如需可能例外狀況以及如何處理例外狀況的詳細資訊,請參閱 處理網路應用程式中的例外狀況。
搭配藍牙使用 StreamSocketListener
您的應用程式可以使用 StreamSocketListener 透過藍牙 RFCOMM 接聽網路連線。 透過藍牙的網路聯機會使用藍牙服務標識碼作為連線的端點,而不是IP埠或服務名稱。 若要接聽藍牙,您的應用程式會在 StreamSocketListener 上呼叫其中一個 BindServiceNameAsync 方法,並將 localServiceName 參數設定為藍牙服務標識符。
若要搭配藍牙使用 StreamSocketListener 和 StreamSocket ,必須在應用程式指令清單中設定 bluetooth.rfcomm 裝置功能。 如需詳細資訊,請參閱 Windows.Devices.Bluetooth.Rfcomm 命名空間、 如何指定藍牙的裝置功能,以及 藍牙 Rfcomm 聊天範例。
在 Windows Server 2012 上使用 StreamSocketListener
在 Windows Server 2012 和 Windows Server 2012 R2 上,實作 Windows.Networking.Sockets 命名空間中大部分類別的 Windows.Networking.dll 將無法載入,除非已啟用 Media Foundation 功能。 因此,如果停用 Media Foundation 功能,使用 StreamSocketListener 和 Windows.Networking.Sockets 命名空間中相關套接字類別的應用程式將會失敗。 Windows Server 2012 或 Windows Server 2012 R2 安裝,並停用 Media Foundation 功能。
您可以使用 伺服器管理員 或在命令提示字元或文稿中輸入下列文字,在 Windows Server 2012 或 Windows Server 2012 R2 上啟用媒體基礎功能:
dism /online /enable-feature /featurename:ServerMediaFoundation
啟用 Media Foundation 功能之後,系統會提示使用者重新啟動。 重新啟動計算機之後, Windows.Networking.Sockets 命名空間中的套接字和 WebSocket 類別會如預期般運作。
建構函式
StreamSocketListener() |
建立新的 StreamSocketListener 物件。 |
屬性
Control |
取得 StreamSocketListener 物件上的套接字控件數據。 |
Information |
取得 StreamSocketListener 物件的套接字資訊。 |
方法
事件
ConnectionReceived |
事件,指出 已在 StreamSocketListener 物件上收到連接。 |
適用於
另請參閱
- IClosable
- SocketError
- SocketErrorStatus
- StreamSocket
- StreamSocketListenerConnectionReceivedEventArgs
- StreamSocketListenerControl
- StreamSocketListenerInformation
- 使用套接字連線
- 處理網路應用程式中的例外狀況
- 如何使用數據流套接字連線
- 如何使用數據流套接字連線
- 如何指定藍牙的裝置功能
- 如何使用進階套接字控件
- 針對網路連線進行疑難解答和偵錯
- 藍牙 Rfcomm 聊天範例
- ControlChannelTrigger StreamSocket 範例
- 鄰近性範例
- StreamSocket 範例