无法访问已释放的对象.在c客户端&;服务器

本文关键字:客户端 amp 服务器 对象 访问 释放 | 更新日期: 2023-09-27 18:29:14

我已经解决了无法访问已处理对象的问题。在c客户端&服务器

以下是我使用的要点。

  • 用于范围限制
  • 我不是封闭套接字对象

类客户端{static void Main(string[]args){Console.Title="客户端聊天";byte[]字节=新字节[1024];//用于传入数据的数据缓冲区字符串数据=空;

        // connect to a Remote device
        try
        {
            // Establish the remote end point for the socket
            IPHostEntry ipHost = Dns.Resolve("localhost");
            IPAddress ipAddr = ipHost.AddressList[0];
            IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 95);
            using (Socket Socketsender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
            {
                Socketsender.Connect(ipEndPoint);

                Console.WriteLine("'n'n'tSocket Connecting To Java Server...." + Socketsender.RemoteEndPoint.ToString());                                   
                while (true)
                {
                    Console.Write("'n'n'tClient::");
                    string theMessage = Console.ReadLine();
                    byte[] msg = Encoding.ASCII.GetBytes(theMessage);
                    // Send the data through the socket

                    int bytesSent = Socketsender.Send(msg);
                    //Recieved from Java Server Message
                    int bytesRec = Socketsender.Receive(bytes);
                    Console.WriteLine("'n'n'tJava Server Says:: {0}", Encoding.ASCII.GetString(bytes, 0, bytesRec));              
                }
                //Socketsender.Close();
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
        Console.ReadLine();
    }

}

无法访问已释放的对象.在c客户端&;服务器

在循环外创建Socket处理程序对象,并在循环内关闭它。第二次遍历循环时,您看到的是一个已经关闭的Socket对象
在完成Socket之前不要关闭它。