C# 断开连接时出现套接字异常

C# 断开连接时出现套接字异常,c#,winforms,sockets,udp,C#,Winforms,Sockets,Udp,我正在用C#Windows窗体构建一个小的UDP聊天,我遇到了断开按钮的问题。 当我按下断开按钮时,会出现插座异常,显示: 发送或接收数据的请求被拒绝,因为套接字未连接-在发送数据时 我的代码: private void btnDisconnect_Click(object sender, EventArgs e) { try { sckCommunication.Disconnect(true);

我正在用C#Windows窗体构建一个小的UDP聊天,我遇到了断开按钮的问题。 当我按下断开按钮时,会出现插座异常,显示: 发送或接收数据的请求被拒绝,因为套接字未连接-在发送数据时

我的代码:

    private void btnDisconnect_Click(object sender, EventArgs e)
    {

        try
        {
            sckCommunication.Disconnect(true);
            btnConnect.Enabled = true;
            btnDisconnect.Enabled = false;
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }


    }
有人能帮我了解一下按钮有什么问题吗?
提前谢谢

我想您是在连接之前按下了断开按钮吧

如果您试图断开未连接的套接字,该套接字将引发异常

尝试以下方法:


if(sckCommunication.Connected)
{
SCK通信。断开连接(true);
}

如果(!sckCommunication.Connected)
{
btnConnect.Enabled=true;
btnDisconnect.Enabled=false;
}

使用socket.close而不是disconnect。现在我在OperatiorCallBack方法上遇到另一个异常:无法访问已释放的对象。对象名称:“System.Net.Sockets.Socket”。该行出现异常:int size=sckCommunication.EndReceiveFrom(ar,ref-epRemote);是的,这是一个有效的异常,因为您的代码被卡在client.connect()上,它只会在您获得连接后执行。因此,当你关闭它时,释放所有资源,连接抛出异常。所以它很完美。好吧,在处理了一些异常之后,它现在似乎可以工作了。谢谢大家的帮助!请分享你解决问题的方法?我不会在没有连接的情况下按断开按钮,因为断开按钮在连接之前不会启用。这不一定是问题。。。看见