StreamSocket.UpgradeToSslAsync

时间:2016-12-21 18:07:00

标签: c# sockets uwp

当连接和启动SSL握手之间有暂停时(因此远程服务器关闭连接),我收到带有HResult = 0x800704C9的System.Exception。

await socket.UpgradeToSslAsync(SocketProtectionLevel.Tls12, socket.Information.RemoteHostName);

Windows.Networking.Sockets.SocketError.GetStatus(e.HResult)为0x800704C9代码提供Unknown。但是,错误查找工具会识别此代码并指示0x04C9 / 0x800704C9代码对应于“远程计算机拒绝网络连接”。错误。

但是,CONNECTION REFUSED有自己的代码0x274D(“无法建立连接,因为目标机器主动拒绝它。”)。事实证明,Windows有两个相同的错误代码,其中只有一个被SocketError类识别。

那么0x04C9和0x274D错误之间的区别是什么?它是SocketError.GetStatus中的一个错误,所以它只能理解其中一个代码吗?

我的代码在很大程度上依赖于SocketError.GetStatus!= SocketErrorStatus.Unknown,因为这不是确定发生的异常是一般异常还是网络相关的其他方法(抛出的所有异常都是System.Exception类,而不是IOException或任何东西等)。

我担心有一天网络相关的错误会出现,而且SocketError.GetStatus不会识别..

1 个答案:

答案 0 :(得分:0)

HRESULT错误:0x8007274d

Winsock错误:WSAECONNREFUSED(10061)

这意味着无法建立连接,因为目标计算机主动拒绝它。这通常是因为尝试连接到在外部主机上处于非活动状态的服务 - 即没有运行服务器应用程序的服务

HRESULT错误:0x800704c9

系统错误代码:ERROR_CONNECTION_REFUSED(1225)

这意味着远程计算机拒绝网络连接。但它不是Windows Sockets Error Codes之一。所以Windows.Networking.Sockets.SocketError.GetStatus(e.HResult)为0x800704C9代码提供了Unknown。