我正在将 C++ 库移植到 WinRT。它使用 Winsock。 WinRT 不支持 Winsock。 Microsoft 指导您改用 Windows.Networking.Sockets。我在尝试将 Winsock API 映射到 Windows.Networking.Sockets API 时遇到问题。我在托管代码中使用过套接字,但在 C++ 中没有使用过。我不熟悉 Winsock API。
我肯定会遇到其他问题,但首先,我需要确定获取套接字错误代码的正确方法。我认为这是正确的映射:WSAGetLastError() == SocketError.GetStatus(hresult)
正确吗?
- 此文档详细说明了使用 winsock 时可能出现的错误代码:
Windows Sockets Error Codes - 此文档详细介绍了一个枚举,我认为它是等效的,但有很大不同:
SocketErrorStatus enumeration
两者的错误代码数量差别很大。此外,WSAGetLastError() 返回最后一次失败的 Windows Sockets 操作的错误状态,其中 SocketError.GetStatus(hresult) 需要一个 hresult 作为输入,可能来自特定尝试操作的异常处理。这将需要进行大量重构才能进行此更改,因此我想确保在开始工作之前我做对了。
最后,是否有人可以向我推荐定义我正在寻找的映射的文档?
最佳答案
Winsock isn't supported in WinRT.
截至 2014 年 10 月,它是。 https://blogs.windows.com/buildingapps/2014/10/13/winsock-and-more-open-source-for-your-windows-store-apps/
在我这边用 Winsock 重建了应用程序并且可以确认它可以工作。
关于c++ - Winsock -> WinRT Windows.Networking.Sockets -- 映射错误代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17664869/