SSL 핸드 셰이크 연결과 시작 사이에 일시 중지가 발생하여 원격 서버가 연결을 닫을 때 HResult = 0x800704C9로 System.Exception이 발생합니다.0x88704C9 오류가 StreamSocket.UpgradeToSslAsync와 일치하지 않습니다.
await socket.UpgradeToSslAsync(SocketProtectionLevel.Tls12, socket.Information.RemoteHostName);
Windows.Networking.Sockets.SocketError.GetStatus (e.HResult)는 0x800704C9 코드 알 준다. 그러나 오류 조회 도구는이 코드를 인식하고 0x04C9/0x800704C9 코드가 "원격 컴퓨터가 네트워크 연결을 거부했습니다."라는 내용을 나타냅니다. 오류.
그러나 CONNECTION REFUSED에는 자체 코드 0x274D가 있습니다 ("대상 컴퓨터가 적극적으로 거부했기 때문에 연결할 수 없습니다."). Windows에는 동일한 오류 코드가 두 개 있으며 SocketError 클래스에서 그 중 하나만 인식합니다.
0x04C9와 0x274D 오류의 차이점은 무엇이며이 코드 중 하나만 이해할 수 있도록 SocketError.GetStatus의 버그입니까?
내 코드는 발생 된 예외가 일반인지 또는 네트워크 관련인지를 판별하는 다른 방법이 없기 때문에 SocketError.GetStatus! = SocketErrorStatus.Unknown에 많이 의존합니다 (throw되는 모든 예외는 IOException 또는 System.Exception 클래스가 아닙니다.) 뭐든지). 내가 SocketError.GetStatus에 의해 인식되는 어떤 다른 네트워크 관련 오류가 일일 발생할 수 없습니다 걱정 해요
..
죄송합니다. 이해할 수 없습니다. 이 두 가지 유형의 "거부 됨"과 SocketError.GetStatus가 지원하는 이유 중 하나만 이해하지 못했습니다. – Alex
@ Alex'0x800704C9' 오류는 소켓 작업으로 인해 발생하지 않습니다. –
"원격 컴퓨터가 네트워크 연결을 거부했습니다"는 네트워크 작업처럼 보입니다 ... OutOfMemoryException, NullReferenceException 등과 같이 네트워크 문제와 완전히 관련이 없으며 다르게 처리되어야합니다 (대신 호출자에게 던져 져야 함). 내 코드에서 처리). – Alex