如何在TCP客户端中处理Java异常?

时间:2020-10-30 20:32:32

标签: java sockets exception

我今天遇到了冗长的问题,对此我必须提前道歉。

我需要整天保持客户端套接字打开。如果服务器无法访问,我可以选择尝试连接到备用服务器。

在Java中,客户端TCP会发生很多不同的异常:套接字连接,输入读取和输出写入有许多异常。我知道其中一些要求关闭并重新打开套接字,而在其他情况下,可以重试该操作。我希望我知道哪些需要关闭/新,哪些可以重试。似乎应该在某个地方进行记录?这些方法甚至似乎都没有记录所有可能引发的特定异常。我想我应该看看源代码。

如果在读取过程中遇到某些错误,则需要关闭套接字并获得一个新的套接字。如果我正在等待对此读物的回应,那我绝对不会在那一点上得到它!服务器可能已收到请求,也可能未收到该请求。如果我可以控制服务器软件,则可以添加一些可以让我在重新连接后重新发送请求的东西,并且服务器可以告诉我“我已经收到了……... ,以防万一您没收到,这也是您的回应!”那样很好,但是,,。

是否有人列出了所有可能的/可能的异常,表明那些需要socket.close()/ new的异常,以及那些可以重试的异常等?仅列出所有可抛出的内容以及可能的重新创建场景将很有帮助,因此我可以尝试在测试过程中逐一列出。我可以轻松地创建一个服务器来模拟接收请求和发送响应。我可以在某些时候断开连接,等等。

每当我搜索Java和套接字以及异常时,我发现的大多数文章都在谈论如何处理SocketException!那只是问题的一小部分!

在我的情况下,TCP连接处理重要信息。不幸的是,如果客户端执行write(),即使事情已经部分关闭,它也可能不会收到错误。直到下一个write()(或两个!),我才发现有些地方出了问题。我正在考虑在每个实际请求之前对虚拟请求进行write()处理,以试图更快地收到连接已断开的通知,并可能避免向深渊发送真实请求。明智吗?

我的是一个简单的事务性消息过程。发送请求。收到回应。然后,连接保持空闲状态,直到需要发送下一个请求。从某种程度上说,TCP的可靠性是很奇怪的-只要它保持运行状态!就我而言,因为请求和响应时间不长,所以使用TCP实际上可能没有什么好处。

谢谢!

0 个答案:

没有答案
相关问题