我有两个通过TCP/IP进行通信的组件.组件A充当服务器/侦听器,组件B充当客户端.两者应该尽快沟通.任何时候都只能有一个连接(尽管这个问题不在此处).我公司的一位高级开发人员表示,我需要在两个组件之间使用应用程序级心跳,以确保连接保持打开状态.
我认为连接保持开放与TCP/IP,但我读过许多博客/网站,说这些应用程序之间的心跳是非常标准的做法.
我知道组件A心跳组件B的部分原因是,如果组件B存在通信问题(链路断开或组件B未运行),它可以通知支持.是否因任何其他原因需要心跳?比如确保经常出现"在管道中"保持开放的东西?
组件A当前每20秒检测一次组件B,如果在120秒内没有从组件B接收到任何内容,则关闭连接.然后,假设如果链路断开,组件B将定期尝试重新连接,则它继续侦听连接.这成功了.
重申我的问题:保持TCP/IP连接存活所需的心跳是否必要?
我遇到了Java套接字API的一些问题.我正在尝试显示当前连接到我的游戏的玩家数量.很容易确定玩家何时连接.但是,确定玩家何时使用套接字API断开连接似乎不必要.
调用isConnected()已远程断开的套接字似乎总是返回true.同样,调用isClosed()已远程关闭的套接字似乎总是返回false.我已经读过,要实际确定套接字是否已关闭,必须将数据写入输出流并且必须捕获异常.这似乎是处理这种情况的一种非常不洁净的方式.我们不得不经常通过网络垃圾邮件垃圾邮件,以便知道套接字何时关闭.
还有其他解决方案吗?
当我使用例如PuTTY并且我的连接丢失时(或者当我ipconfig /release在Windows上执行手册时),它会直接响应并通知我的连接丢失.
我想创建一个Java程序来监视我的Internet连接(到一些可靠的服务器),以记录我的Internet失败时的日期/时间.
我尝试使用该Socket.isConnected()方法,但这将永远返回"真".我怎么能用Java做到这一点?
大家好.我有一个使用ServerSocket和Socket类用java编写的服务器.
我希望能够检测并处理断开连接,然后在必要时重新连接新客户端.
检测客户端断开连接,关闭套接字,然后接受新客户端的正确步骤是什么?
事情是这样的:在 Tomcat 6 上运行的基于 Web 的应用程序。客户端向服务器发送请求,服务器进行一些处理,重定向到第 3 方 URL,然后再次进行一些处理。
在进行重定向之前,我想知道客户端连接是否仍然打开(以便我可以阻止第二次处理)。我知道 sendRedirect 会抛出 IOException 和 IllegalStateException ,并且可以在重定向失败时处理这些异常。
我还尝试从响应中获取输出流并将任何垃圾字符写入该流。但没有用(即使我在调用请求后从局域网中删除客户端计算机)
我想知道 - 有什么方法可以确定客户端和服务器之间的连接是否仍然处于活动状态?