【问题标题】:Get the actual socket from SocketException从 SocketException 获取实际的套接字
【发布时间】:2014-05-13 22:30:30
【问题描述】:

如何从 SocketException 中获取当前套接字?

我有一个所有可用套接字的列表,如果该套接字不再可用,我想将其从列表中删除。

try
{
    /* Socket stuff */
}
catch (SocketException se)
{
    if (ex.ErrorCode == (int)SocketError.ConnectionAborted)
    {
        // Remove socket from list
        ConnectionAborted( currentSocket );
    }
}

我检查了MSDN,但找不到任何东西。

所以ConnectionAborted 方法应该从列表中删除出现问题的套接字,这样它就不再检查新数据了。

【问题讨论】:

  • currentSocket不是声明在try之上吗?
  • 重构 /* 套接字的东西 */ 所以它在 currentSocket 的范围内捕获异常。

标签: c# .net sockets socketexception


【解决方案1】:

当网络发生错误时,Socket 和 Dns 类会抛出 SocketException。

这意味着Socket对象的方法之一抛出SocketException,因此你已经知道它的来源,代码应该是这样的:

Socket currentSocket;

try
{
    /* Socket stuff with currentSocket */
}
catch (SocketException se)
{
    if (ex.ErrorCode == (int)SocketError.ConnectionAborted)
    {
                    //Remove socket from list
        ConnectionAborted( currentSocket ); // At his point currentSocket is in scope.
    }
}

【讨论】:

  • 谢谢,我认为可以直接从 SocketException 获取它,但这也可以。
猜你喜欢
  • 2016-07-27
  • 2014-09-09
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 2021-12-10
  • 2013-04-27
相关资源
最近更新 更多