Java TCP SSL套接字-服务器如何让我等待?

我正在构成自己的客户端,以使用一些不常见的协议与现有服务器进行通信。 该协议基本上是通过TLS 1.2 TCP套接字发送和接收XML块的。 它描述了相当长的会话。有时,客户端和服务器将在不断开连接的情况下发送和接收XML数周。

即使服务器没有发送,我也不明白我的客户如何耐心等待发送内容。

连接到服务器时,出现类似以下内容:

<mainTag>
<greeting>
</greeting>
(notice: no </mainTag>)

我的客户中没有任何东西能实现"if you see <tag>,wait for </tag>"的逻辑(我自己写的都是白手起家的。)

以下是一些有关我如何读取服务器发送的内容的代码:

try (
    SSLSocket socket = getSSLsocket(keystoreFile,keystorePass,keystorePass);
        // ... Write-stuff removed,irrelevant to the question ...
    BufferedReader in = new BufferedReader(
            new InputStreamReader(
                    socket.getInputStream()));
    ) {
        socket.startHandshake();
        // ... Write-stuff removed,irrelevant to the question ...
        String inputLine;
        while ((inputLine = in.readLine()) != null)
            System.out.println(inputLine);
    }
}

private static SSLSocket getSSLsocket (String ksPath,String ksPass,String pkPass) {
    SSLContext context = SSLContext.getInstance("TLS");
        // ... Some key management stuff removed ...
    SSLSocketFactory sslScktFactory = context.getsocketFactory();
    return (SSLSocket)sslScktFactory.createSocket(hostFQDN,port);
}

特别是在调试过程中,我进入了while ((inputLine = in.readLine()) != null)并且到达了</greeting>,但是当我再次进入时,我看到它只是挂在那儿。

.readLine()返回什么吗?如果是这样,为什么不打印?
或者,它没有返回任何东西?如果是这样,为什么.readLine()不为空?

WUDEjiyi123 回答:Java TCP SSL套接字-服务器如何让我等待?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3080816.html

大家都在问