获取 StreamSocket 的连接状态 (UWP)
Get a StreamSocket's Connection Status (UWP)
我在 Windows 通用应用程序中使用 StreamSocket 与基于文本的游戏建立 TCP/IP 连接(套接字长时间保持打开状态)。我可以很好地连接和返回数据。我过去使用的大多数套接字实现都有一个 属性 或函数(或一种轮询套接字的方法)并获取状态(无论它是打开的、关闭的、中断的、挂起的,等等)。
我一直无法找到使用 StreamSocket 执行此操作的方法。
我的问题是,我如何查询 StreamSocket 连接的状态以查看它是否已断开(无需等到我向管道发送内容以使其出错)?
例如,我可以做类似的事情:
if (this.Socket.Status != Status.Connected)
...
if (this.Socket.Status != Status.Connected)
你写的代码很优雅,但是,据我所知,uwp 没有提供这样的api。
Windows.Networking.Sockets
命名空间具有方便的辅助方法和枚举,用于在使用套接字和 WebSocket 时处理错误。这对于在您的应用中以不同方式处理特定网络异常非常有用。
在 DatagramSocket
、StreamSocket
或 StreamSocketListener
操作中遇到的错误将作为 HRESULT
值返回。 SocketError.GetStatus
方法用于将网络错误从套接字操作转换为SocketErrorStatus
枚举值。大多数 SocketErrorStatus
枚举值对应于本机 Windows 套接字操作返回的错误。应用可以过滤特定的 SocketErrorStatus
枚举值,以根据异常原因修改应用行为。
对于参数验证错误,应用程序还可以使用异常中的 HRESULT
来了解有关导致异常的错误的更多详细信息。 Winerror.h 头文件中列出了可能的 HRESULT
值。对于大多数参数验证错误,返回的 HRESULT
是 E_INVALIDARG
.
我在 Windows 通用应用程序中使用 StreamSocket 与基于文本的游戏建立 TCP/IP 连接(套接字长时间保持打开状态)。我可以很好地连接和返回数据。我过去使用的大多数套接字实现都有一个 属性 或函数(或一种轮询套接字的方法)并获取状态(无论它是打开的、关闭的、中断的、挂起的,等等)。
我一直无法找到使用 StreamSocket 执行此操作的方法。
我的问题是,我如何查询 StreamSocket 连接的状态以查看它是否已断开(无需等到我向管道发送内容以使其出错)?
例如,我可以做类似的事情:
if (this.Socket.Status != Status.Connected)
...
if (this.Socket.Status != Status.Connected)
你写的代码很优雅,但是,据我所知,uwp 没有提供这样的api。
Windows.Networking.Sockets
命名空间具有方便的辅助方法和枚举,用于在使用套接字和 WebSocket 时处理错误。这对于在您的应用中以不同方式处理特定网络异常非常有用。
在 DatagramSocket
、StreamSocket
或 StreamSocketListener
操作中遇到的错误将作为 HRESULT
值返回。 SocketError.GetStatus
方法用于将网络错误从套接字操作转换为SocketErrorStatus
枚举值。大多数 SocketErrorStatus
枚举值对应于本机 Windows 套接字操作返回的错误。应用可以过滤特定的 SocketErrorStatus
枚举值,以根据异常原因修改应用行为。
对于参数验证错误,应用程序还可以使用异常中的 HRESULT
来了解有关导致异常的错误的更多详细信息。 Winerror.h 头文件中列出了可能的 HRESULT
值。对于大多数参数验证错误,返回的 HRESULT
是 E_INVALIDARG
.