我一直在研究用于创建 socket
的 C++(或 Windows API)方法和用于创建 socket
的 .Net 方法。我担心的是,在 Windows 套接字中可用的相同错误代码是否也可在 .Net Socket
类中使用。我看过this page关于“Windows 套接字错误代码”以及 this page ,它描述了 .Net Socket
类的错误代码。
查看以上两个页面后,似乎 .Net Socket
类提供了与 Windows API 一样多的 socket
错误报告。我更愿意使用 .Net 来实现 Socket
,因为我觉得对于我这样一个在 C++ 和网络编程方面知识不广的人来说会更容易.但是,这项工作要求我能够报告与 Windows API 相同粒度的错误。
我试图在这里尽可能具体,但根据所提供的信息,关于将两者与错误代码进行比较,您能告诉我什么?据我所知,我认为 C# Socket
类在这方面与 Windows API 一样强大。
最佳答案
如果您在 .NET 中收到 SocketException
,该异常有一个名为 ErrorCode 的属性它映射到您在第一个链接中发布的所有值。
因此,这两个 API 的错误报告都一样精细。您链接到的枚举只是为了说服,因此您不需要为更流行的错误代码创建自己的常量。
const int WSA_E_NO_MORE= 10110;
const int WSAEACCES = 10013;
void Foo()
{
try
{
//...
}
catch(SocketException ex)
{
// These two lines are equivalent.
//if(ex.ErrorCode == WSAEACCES)
if(ex.ErrorCode == SocketError.AccessDenied)
{
//Do something special for access denied.
}
else if(ex.ErrorCode == WSA_E_NO_MORE)
{
//Do something special with the WSA_E_NO_MORE error code
}
}
}
如果您想要一种简单的方法来查看哪个枚举准确映射到哪个错误代码 the reference source显示每个枚举代表的 native 常量。
关于c++ - .Net Socket 类错误代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27070738/