如何获取套接字异常值

时间:2014-07-23 04:56:07

标签: c# socketexception

我使用了一个组件来创建套接字连接。现在,我有一个可以通过组件相互连接的客户端和服务器。但我的问题是:当发生一些错误时,我得到了一个这样的消息:

System.Net.Sockets.SocketException (0x80004005): No connection could be made because the target machine actively refused it

我想知道这个代码(0x80004005)和Winsock错误代码之间的任何关系 MSDN WebSite?这段代码是什么意思?是否显示值错误代码?!或类似的东西?

实际上我想获得像10061这样的相关值,但我不知道如何通过上面的字符串值来获得它。谢谢你的帮助。

2 个答案:

答案 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编程日):