您好,感谢您的帮助。 这次想问一下TcpClient。 我有一个服务器程序,我正在编写一个客户端程序。 此客户端使用 TcpClient。首先是创建一个新客户端
clientSocket=new TcpClient();
(顺便说一下,这会导致异常吗?以防万一我把它放在 try-catch 中,但我不确定这是否真的有必要) 无论如何,稍后我进入一个循环并在这个循环中连接到服务器
clientSocket.Connect("xx.xx.xx.xx",port);
然后我创建一个 NetworkStream
clientStream=clientSocket.GetStream();
然后通过Read开始等待服务器的数据。我知道这是阻塞的,所以我还设置了一个 ReadTimeOut(比如 1 秒)
无论如何,到目前为止一切顺利。 稍后如果我没有从服务器收到任何东西,我会尝试向它发送一些东西。如果这种情况持续发生 3 次,我想关闭连接并再次重新连接到服务器
(请注意,一个完全不同的问题是当服务器以某种方式关闭时,导致客户端出现其他类型的错误——也许我稍后会问这个问题)
那么,我该怎么办?
if(clientSocket.Connected)
{
Console.WriteLine("Closing the socket");
clientSocket.Close();
}
我关闭套接字。 循环结束,所以我再次回到开头并尝试连接到服务器。
clientSocket.Connect("xx.xx.xx.xx",port);
但是这会导致错误(实际上是未处理的异常)“无法访问已处置的对象”
所以我的问题是 我怎样才能关闭并重新连接到服务器??
再次感谢您的帮助
最佳答案
TcpClient
实例只能用于连接一次。您可以简单地实例化一个新的 TcpClient
,而不是尝试重新打开一个关闭的客户端。
关于c# - TcpClient:如何关闭并重新连接它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39401952/