繁体   English   中英

应用程序抛出 java.net.SocketTimeoutException:从 TCP 套接字读取时读取超时

[英]Application throwing java.net.SocketTimeoutException: Read timed out while reading from TCP socket

我有一个应用程序通过 TCP/IP 通道对IBMSafer系统进行同步调用。

接收到的数据分别以<IRIS>标记开始和结束,该标记已在应用程序中配置为仅轮询数据,直到我们收到结束标记</IRIS>为止。

但是,应用程序抛出以下异常:

java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method) ~[?:1.8.0_282]
    at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) ~[?:1.8.0_282]
    at java.net.SocketInputStream.read(SocketInputStream.java:171) ~[?:1.8.0_282]
    at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[?:1.8.0_282]
    at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284) ~[?:1.8.0_282]
    at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326) ~[?:1.8.0_282]
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) ~[?:1.8.0_282]
    at java.io.InputStreamReader.read(InputStreamReader.java:184) ~[?:1.8.0_282]
    at java.io.BufferedReader.fill(BufferedReader.java:161) ~[?:1.8.0_282]
    at java.io.BufferedReader.read1(BufferedReader.java:212) ~[?:1.8.0_282]
    at java.io.BufferedReader.read(BufferedReader.java:286) ~[?:1.8.0_282]
    at java.io.Reader.read(Reader.java:140) ~[?:1.8.0_282]

该错误与服务器的响应延迟无关,因为我可以在几毫秒内使用此命令连接到服务器并从我的腻子 session 获得响应:

nc --ssl <Server_IP>

似乎应用程序无法从请求队列中读取/或寻找更多无限期卡住的缓冲区,一旦达到超时,就会引发错误。

从应用程序的角度来看,配置如下:

READ FROM -- `SERVER IP`
PORT --  `PORT NUMBER`
READ FROM SOCKET STARTS FROM --- `""` (empty string)
READ FROM SOCKET TILL --- `</IRIS>` is encountered.
OPEN SOCKET PER MSG --- `NO`
TIMEOUT --- `5 sec`

我已经用头撞了好几个小时了。

编辑:应用程序应该发送如下内容:

<IRIS> .... request payload .... </IRIS>

并阅读如下内容:

<IRIS> .... response payload .... </IRIS>

一旦遇到</IRIS> ,应用程序需要停止从套接字读取响应缓冲区。 这是由于线路分解问题而完成的。

我的应用程序正在发送正确的信息,因为请求有效负载也被捕获在日志中,如果通过netcat命令完全按照原样发送到 IBMSafer 服务器,则会返回字符串响应。

该问题已得到修复。 出现问题是因为我使用的是来自客户端应用程序的普通 Socket 连接,但 IBMSafer 实际上有一个 SSLServerSocket,它仅在客户端也使用 SSL 安全通道时才建立连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM