我使用了一个组件来创建套接字连接。现在,我有一个可以通过组件相互连接的客户端和服务器。但我的问题是:当发生一些错误时,我得到了一个这样的消息:
System.Net.Sockets.SocketException (0x80004005): No connection could be made because the target machine actively refused it
我想知道这个代码(0x80004005)和Winsock错误代码之间的任何关系 MSDN WebSite?这段代码是什么意思?是否显示值错误代码?!或类似的东西?
实际上我想获得像10061
这样的相关值,但我不知道如何通过上面的字符串值来获得它。谢谢你的帮助。
答案 0 :(得分:5)
异常对象的ErrorCode属性包含套接字错误代码。错误代码列表定义为here。
您的案例中的错误是 WSAECONNREFUSED 10061
BTW,你必须捕获SocketException,而不是一般的Exception来获取错误代码。
try
{
}
catch (System.Net.Sockets.SocketException sockEx)
{
int errorCode = sockEx.ErrorCode;
}
但是,如果您想获取原生错误代码,则可以改为使用sockEx.NativeErrorCode
。
答案 1 :(得分:2)
如果构造代码以捕获C#异常,则异常应该包含错误文本。
实施例
try
{
...
}
catch (Exception ex)
MessaageBox.show(ex.toString());
}
其他所有情况都失败了,你可以随时PInvoke旧的Win32 FormatMessage:
http://bobobobo.wordpress.com/2009/02/02/getting-winsock-error-messages-in-string-format/
并且总是有sockets.com(来自我的16位WinSock2编程日):