SocketException Connection reset
问题描述如下:目标地址 221.111.10.1 10010
telnet 目标端口是通的
Socket连接目标端口 10010 ,已经连接成功。但是发送信息到目标端口,然后读取返回信息的时候提示 SocketException Connection reset。
环境是unix环境。程序在自己电脑windows好运行是正常的。但是部署到unix环境后就出现上述Connection reset。
unix环境有两层防火墙,做的策略都是一样的。而且我们测试telnet目标端口都是通过的。
有没有人,能够提供一下思路,告诉一下我应该怎么定位问题。问题出在哪一步。
坐等高手,提供检查思路。
--------------------编程问答-------------------- java.net.SocketException: Connection reset。
该异常在客户端和服务器端均有可能发生,引起该异常的原因有两个,第一个就是如果一端的Socket被关闭(或主动关闭或者因为异常退出而引起的关闭),另一端仍发送数据,发送的第一个数据包引发该异常(Connect reset by peer)。另一个是一端退出,但退出时并未关闭该连接,另一端如果在从连接中读数据则抛出该异常(Connection reset)。简单的说就是在连接断开后的读和写操作引起的 --------------------编程问答-------------------- 照着原因 你再仔细排查下 --------------------编程问答-------------------- 产看流是否正常关闭。 --------------------编程问答-------------------- 把你流处理的那段代码发来看看吧,客户端服务器端 --------------------编程问答-------------------- IP地址没有变动吗? --------------------编程问答--------------------
不外乎楼上的情况 --------------------编程问答-------------------- 原因已经找到了,现在也已经调整好了,程序正常了。
这个主要原因是 我们是互联系统,但是现在对方提供服务的系统配置了错误的路由,造成我们的请求他们的221.111.10.1 10010响应信息转发到了他们另外的一个出口ip上。俗称三角路由。
现在对端已经调整了,路由策略。现在已经程序运行成功。
总的来说,还是要相信能够运行正常的程序和telnet获得的结果。
也感谢大家的回复。
希望也给大家一个案例参考。
补充:Java , Java SE