我一直在研究用于创建socket
的C ++(或Windows API)方法,以及用于创建socket
的.Net方法。我担心的是.Net Socket
类中是否也提供了Windows套接字中可用的相同错误代码。我查看了this page" Windows套接字错误代码"还有this page,它描述了.Net Socket
类的错误代码。
在查看上述两个页面后,似乎.Net Socket
类提供的socket
错误报告与Windows API一样多。我更倾向于使用.Net来实现Socket
,因为我觉得作为一个在C ++和网络编程方面没有广泛知识的人会更容易。但是,此作业要求我能够报告与Windows API相同粒度的错误。
我试图在这里尽可能具体,但是根据所提供的信息,您可以告诉我有关比较两者的错误代码吗?据我所知,我认为C#Socket
类在这方面与Windows API一样强大。
答案 0 :(得分:1)
如果您在.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显示每个枚举代表的原始常量。