无法访问配置的插座

时间:2013-10-20 18:01:09

标签: c# wpf sockets

我有一个异步套接字应用程序,我正在尝试设置以更好地处理异常。当捕获到套接字异常时,我关闭套接字并将它们带回“连接”屏幕,在那里它尝试重新连接套接字。问题是 - 当尝试重新连接时,我收到一个错误,表示当前套接字已被丢弃。

当我尝试重新连接时,有没有办法检查套接字是否已被丢弃,如果是这样重新实例化套接字?

 catch (Exception e)
 {
                ShutDownAfterException();

                Console.WriteLine(e.ToString());
                Console.WriteLine("From ReceiveCallback");
 }

private void ShutDownAfterException()
{
            Client.Shutdown(SocketShutdown.Both);
            Client.Close();
            Client = null;

            Stop();
            Application.Current.Dispatcher.BeginInvoke(
            DispatcherPriority.Background,
            new Action(() => Messenger.Default.Send<NavigateMessage>(new NavigateMessage(ConnectViewModel.ViewName, this))));
}

1 个答案:

答案 0 :(得分:1)

Socket.Close方法实际上将断开处理套接字,这意味着当您下次访问套接字实例时,将抛出异常。

如果您打算断开套接字,请仅使用Socket.Disconnect(reuseSocket: true)