c# - 在未连接的套接字上不允许执行此操作

标签 c# sockets

考虑以下几点:

    public void Connect()
    {
        clientObject = new TcpClient();
        IPEndPoint ipEnd = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 90);
        centralForm.writeLog("Connecting to desired server", System.Drawing.Color.Gray, true);
        clientObject.Connect(ipEnd);
        if ((debug) && (clientObject.Connected)) { Debug.Print("Connected"); }

        Send("0");
        clientObject.GetStream().BeginRead(new byte[] { 0 }, 0, 0, Read, null);
    }

我在这段代码的最后一行收到上述错误。我做错了什么?我已经调用了 Connect()...我已经盯着它看了很多年了,我真的不知道我做错了什么。

发送验证码:

    public void Send(string data)
    {
        using (StreamWriter w = new StreamWriter(clientObject.GetStream()))
        {
            w.WriteLine(data);
            w.Flush();
        }
    }

最佳答案

StreamWriter 被释放时(在 using block 的末尾),used Stream 也被关闭。

Send() 方法之后,您尝试使用导致所述异常的关闭流。

关于c# - 在未连接的套接字上不允许执行此操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19924789/

相关文章:

c - 如何通知 select() 立即返回?

c - 如何使用 C 中的原始套接字发送接收到的数据包?

c# - 在一个应用程序窗口中显示其他应用程序的实时屏幕

c# - 我可以调用这个 C# 类 "immutable"吗?

c# - 在 C# namecheap 私有(private)邮箱中发送电子邮件

c# - 如何从 .NET 4.0 (VS2010) 项目中定位 .NET 1.1 中的 API?

MySQL hell ...无法连接到数据库/tmp/mysql.sock

c - 使用相同的套接字发送和接收 UDP 多播数据包

java - Delphi与Java的套接字通信

c# - 在当前不需要时实现 INotifyPropertyChanged 是一种好习惯吗?