获取StreamSocket的连接状态(UWP)

时间:2017-02-09 18:59:48

标签: c# sockets uwp win-universal-app

我在Windows Universal应用程序中使用StreamSocket与基于文本的游戏建立TCP / IP连接(套接字在较长时间内保持打开状态)。我连接并返回数据很好。我过去使用的大多数套接字实现都具有属性或功能(或轮询套接字的方式)并获取状态(无论是打开,关闭,损坏,待处理等)。 / p>

我还没有找到使用StreamSocket执行此操作的方法。

我的问题是,如何查询StreamSocket连接的状态以查看它是否已被删除(不等到我向管道发送内容以使其出错)?

,例如,我可以这样做:

if (this.Socket.Status != Status.Connected) ...

1 个答案:

答案 0 :(得分:2)

  

if (this.Socket.Status != Status.Connected)

你写的代码非常优雅,但据我所知,uwp没有提供这样的api。

Windows.Networking.Sockets命名空间具有方便的帮助方法和枚举,用于在使用套接字和WebSocket时处理错误。这对于在您的应用中以不同方式处理特定网络异常非常有用。

DatagramSocketStreamSocketStreamSocketListener操作遇到的错误将作为HRESULT值返回。 SocketError.GetStatus方法用于将网络错误从套接字操作转换为SocketErrorStatus枚举值。大多数SocketErrorStatus枚举值对应于本机Windows套接字操作返回的错误。应用可以过滤特定的SocketErrorStatus枚举值,以根据异常原因修改应用行为。

对于参数验证错误,应用程序还可以使用异常中的HRESULT来了解有关导致异常的错误的更多详细信息。 Winerror.h头文件中列出了可能的HRESULT值。对于大多数参数验证错误,返回的HRESULT为E_INVALIDARG