2011-12-21 21 views
0

我有一个Java服务器。客户端通过TCP连接到服务器。这里是我的问题的情况下: 1- 2客户端连接到服务器(客户端&客户机B) 2-客户服务器通信 3-“客户端”客户端没有按从互联网 4-断开套接字连接当客户端a再次连接到互联网时,“客户端a”可以在不连接到服务器的情况下向服务器发送消息,因此不会中断 。客户端和服务器之间的连接并没有结束

我希望服务器和“客户端a”之间的连接在“客户端a”从互联网断开时结束。

您对此有任何意见?

+0

这意味着什么:“何时”客户端“再次连接到互联网”时,客户端a“可以在不连接服务器的情况下向服务器发送消息”。 – 2011-12-21 03:26:46

+0

首先客户端从互联网断开连接,然后再次连接到互联网。客户端连接到互联网后,客户端和服务器之间不会打开新的套接字。它的行为就像旧套接字连接没有关闭(我认为它实际上并没有关闭)。因此客户端可以将消息发送到服务器,因为它从不与服务器断开连接清楚吗? – 2011-12-21 03:33:34

+0

是的,很明显。那么为什么这是一个问题?原来的连接从未破裂,也没有人采取任何行动来打破它。如果您想要检测断开连接并通过断开连接进行响应,即使该连接可以在断开连接时仍然存在,您可以执行此操作。但这不是大多数人想要的,所以这不是默认行为。编码你想要的。 – 2011-12-21 03:36:42

回答

2

那么有意见和有解决方案是两回事:-)

我推荐了加入存活时间,在服务器端的连接。每发送一次保持活动状态(几秒?几分钟?),如果没有保持活动响应,请终止服务器端的连接。

+0

+1这是网络中必不可少的,应该始终使用 – John 2011-12-21 03:34:08

+0

Yeap你是对的,其实我需要解决方案(:我想用你的答案来澄清一些事情,你告诉我在服务器端实现每隔几秒发送一次保持活动请求,如果没有响应这个请求,这意味着客户端不再连接到服务器了。是某种从服务器上ping客户端的,对吧? – 2011-12-21 04:00:33

+0

是的,就是这样,如果你没有得到回应,就杀了它。 – corsiKa 2011-12-21 04:44:35

0

当一台机器与互联网断开连接时,它无法通过互联网发送任何数据。这包括发送关闭或中止连接所需的数据包。因此,如果客户端断开连接,客户端无法关闭连接。如果需要这样做,服务器必须这样做。如果你需要这种能力,应用协议必须提供它。

相关问题