Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在TCP客户机中处理Java异常?_Java_Sockets_Exception - Fatal编程技术网

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

如何在TCP客户机中处理Java异常?,java,sockets,exception,Java,Sockets,Exception,我今天有个冗长的问题,我必须事先道歉 我需要整天保持客户端套接字打开。如果无法访问服务器,我可以选择尝试连接到备份服务器 Java中的客户端TCP可能会发生很多不同的异常:许多异常发生在套接字连接、输入读取和输出写入上。我知道其中一些要求关闭并重新打开套接字,而在其他情况下,可以重试该操作。我希望我知道哪些需要关闭/新建,哪些允许重试。似乎应该在某个地方记录下来?这些方法甚至似乎没有记录可以抛出的所有特定异常。我想我应该看看资料来源 如果在读取过程中遇到某些错误,我需要关闭套接字并获取一个新的套

我今天有个冗长的问题,我必须事先道歉

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

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

如果在读取过程中遇到某些错误,我需要关闭套接字并获取一个新的套接字。如果我在等待那篇文章的回复,那么我肯定不会在那一点上得到它!服务器可能已收到请求,也可能尚未收到请求。如果我能控制服务器软件,我会添加一些东西,让我在重新连接后重新发送请求,我会让服务器能够告诉我“我已经收到了……顺便说一句,如果你没有收到,这也是你的回复!”这很好,但是,唉,没有

是否有人列出了所有可能/可能的异常,指出需要socket.close()/new的异常,以及可以重试的异常,等等。?只要有一个可以抛出的所有内容的列表,以及可能的重新创建场景,就会很有帮助,这样我就可以在测试期间尝试点击每一个。我可以轻松创建一个模拟接收请求和发送响应的服务器。我可以让它在某些点断开,等等

每当我搜索Java、socket和异常时,我找到的大多数文章都在讨论如何处理SocketException!这只是问题的一小部分

在我的例子中,TCP连接处理重要信息。不幸的是,如果客户机执行write(),即使部分关闭,也可能不会出现错误。直到下一次write()(或两次!)我才发现有些地方出了问题。我正在考虑在每个实际请求之前编写一个虚拟请求,以期更快地得到连接已断开的通知,并可能避免向深渊发送真正的请求。这是否明智

我的是一个简单的事务性消息流程。发送请求。收到回复。然后连接保持空闲状态,直到需要发送下一个请求。从某种意义上说,TCP的可靠性很奇怪——只要它保持不变!在我的例子中,由于请求和响应没有那么长,使用TCP实际上可能没有什么好处


谢谢

您可能需要实现心跳来保持连接的活动状态。