TcpClient如何断开连接?

xhenry 2005-06-02 09:48:41
在程序中,我开了一个TcpClient与对方通讯,当我需要关闭连接时,我使用Close方法。我以为连接就关闭了,可是对方的程序确以为连接还在,并继续通过这个连接向我发数据。

大家可以用telnet的方法来验证,调用close方法后,telnet程序并不知道连接已经关闭。但程序一退出,telnet程序就知道连接关闭了。

我现在的临时解决办法是close后立刻调用GC.Collect,调用这个方法后,对方通讯程序就立刻知道连接断开了。

我的问题是,为什么TcpClient.Close不能真正的关闭连接?正确的关闭方法是怎样的?
...全文
710 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
llsljh 2005-08-04
  • 打赏
  • 举报
回复
up
yitiaoming2003 2005-06-27
  • 打赏
  • 举报
回复
using System;
using System.Net;
using System.Net.Sockets;
using System.IO;

namespace Server
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
string line;
IPEndPoint ipep=new IPEndPoint(IPAddress.Any,5000);
TcpListener listener=new TcpListener(ipep);
listener.Start();
Console.WriteLine("server....");

TcpClient client=listener.AcceptTcpClient();
NetworkStream ns=client.GetStream();
StreamReader sr=new StreamReader(ns);
StreamWriter sw=new StreamWriter(ns);
sw.WriteLine("Welcom to my server");
sw.Flush();
while(true)
{
try
{
line=sr.ReadLine();
Console.WriteLine(line);
}
catch(Exception e)
{
Console.WriteLine(e.Message);
break;
}
sw.WriteLine(line);
sw.Flush();
}
sw.Close();
sr.Close();
ns.Close();
listener.Stop(); //关闭连接
}
}
}
Frank6600 2005-06-03
  • 打赏
  • 举报
回复
对不起,我企图模仿你,建立一个 TCPClient 与 Telnet 的连结,
但是问题是,我实在不知道怎么让 TCPClient 与 Telnet 相连呢﹖

TCPClient 是一个 Client 端,Telnet 也是一个 Client 端,它们怎么相连呢﹖
fengfangfang 2005-06-02
  • 打赏
  • 举报
回复
对TCP是双向的,好象是在一方关闭后,另一方会接受到一个关闭请求,另一方也需要关闭
haoztao 2005-06-02
  • 打赏
  • 举报
回复
这方面不是很清楚。。。

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧