Indy的TIdTCPServer使用问题。为什么主程序退出后再打开,客户端连接后竟然有旧的数据发送。 ( 积分: 100 )

  • 主题发起人 主题发起人 WangZhaoHui
  • 开始时间 开始时间
W

WangZhaoHui

Unregistered / Unconfirmed
GUEST, unregistred user!
我用TIdTCPServer接收数据,有时客户端的连接线程会发出数据,但我在服务端并没有收到。此时我关闭了服务端的主程序(此时客户端的连接也断开,但客户端的程序并没有关闭)。如果我再运行服务端的主程序,并且与客户端连接,竟然有一些旧数据(可能是原来发送的我没有接着的)发给我,请问这些数据是哪里来的。是缓冲区没清吗。我如果才能不接收这些历史数据呢。
另外,还有
 
我用TIdTCPServer接收数据,有时客户端的连接线程会发出数据,但我在服务端并没有收到。此时我关闭了服务端的主程序(此时客户端的连接也断开,但客户端的程序并没有关闭)。如果我再运行服务端的主程序,并且与客户端连接,竟然有一些旧数据(可能是原来发送的我没有接着的)发给我,请问这些数据是哪里来的。是缓冲区没清吗。我如果才能不接收这些历史数据呢。
另外,还有
 
IdTCPClient.disconnect;
 
客户端已经断开了。只不过客户端的程序没有退出。
 
我以前没有出现这个问题,你还是多了解它的工作流程,我只能这么说了
 
1. 你的问题是有其他的原因的;
2. Server重新启动后, Client端也必须再连接(Connect)才能与Server通讯, 并没有什么以前的数据可以供Server接收的;
3. 你的问题估计出现在Client的发送数据处理过程中: 即Client重新连接(Connect)之前, 必须清理Client端之前的发送缓冲区(你自己定义的缓冲区);
 
to :天河流星 有可能是你说的问题。我查查。
 
多人接受答案了。
 
后退
顶部