在c#getingError中,无法访问已处理的对象对象名称=';System.Net.Socket.Socket
本文关键字:对象 Socket Net System c#getingError 处理 访问 | 更新日期: 2023-09-27 18:28:47
我想要一个C#客户端和Java服务器中的聊天应用程序
我浏览了C#客户端,但当我响应Java服务器时出现了一些错误,我得到了错误@
无法访问已释放的对象对象name="System.Net.Socket.Socket"
class Program
{
static void Main(string[] args)
{
byte[] bytes = new byte[1024];// data buffer for incoming data
// 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);
Socket Socketsender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// Connect the socket to the remote endpoint
Socketsender.Connect(ipEndPoint);
Console.WriteLine("'n'n___________________Client Server Chat Application__________________________");
Console.WriteLine("___________________________________________________________________________");
Console.WriteLine("'nSocket Connecting To Java Server...." + Socketsender.RemoteEndPoint.ToString());
// Console.ReadLine();
string data = null;
while (true)
{
//Recieved from Java Server Message
int bytesRec = Socketsender.Receive(bytes);
Console.WriteLine("'nJava Server:: {0}", Encoding.ASCII.GetString(bytes, 0, bytesRec));
// Console.ReadLine();
Console.Write("C# Client ::"); // Prompt
string line = Console.ReadLine();
byte[] sendToServer = Encoding.ASCII.GetBytes(line);
// Send the data through the socket
int intByteSend = Socketsender.Send(sendToServer);
// Socketsender.Shutdown(SocketShutdown.Both);
Socketsender.Close();
Console.WriteLine("____________________________________________________________________________");
Console.WriteLine("_________________________End Chat___________________________________________");
// Socketsender.Shutdown(SocketShutdown.Both);
Socketsender.Close();
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
Console.ReadLine();
}
}
在while循环中关闭套接字(Socketsender
),然后在下一次迭代中调用它上的Receive
。
一旦插座闭合,它就死了,1,不能用于任何用途。您需要创建一个新的套接字并将其连接到服务器。
或者更好的是,保持第一个插座打开。
(你也执行了两次关闭,但我认为这是一个转录错误。)
1在此处插入死鹦鹉。