gpt4 book ai didi

java - 从已被服务器关闭的 SSL 套接字读取

转载 作者:太空宇宙 更新时间:2023-11-03 13:17:43 25 4
gpt4 key购买 nike

我正在尝试通过 Java 客户端使用服务(Apple 的推送通知)。他们的文档指出,如果他们收到的数据有错误,他们将向套接字写入一些错误代码,然后将其关闭。 (在出现错误之前不返回任何内容。)

我有一个带有输入和输出流的 SSLSocket。我的代码写入输出流,直到出现管道异常,然后尝试从输入流中读取。我从未看到任何数据返回 - 就好像他们在没有写入 promise 的错误代码的情况下关闭了套接字。

Java SSLSocket 实现中是否有某些东西使得在输出流上发生管道中断异常后无法从套接字读取(即 getInputStream() 的结果)?我不会关闭套接字输入或输出,或类似的东西。

还有其他想法吗?

我的代码看起来像这样:

SSLSocket socket = createMyConnectionToServer();

OutputStream outputStream = socket.getOutputStream();
InputStream inputStream = socket.getInputStream();
try {
while (true) {
outputStream.write(someStuff); // fails with broken pipe the second time
outputStream.flush();
}
} catch (SocketException ex) {
while (true) {
int b = inputStream.read();
if (b == -1)
break
System.out.println("response " + b); // this never happens
}
}

最佳答案

一直写到 broken pipe exception 已经是错误的了。一旦它坏了,你就不能读也不能写。这与 SSL 无关:明文套接字的行为方式相同。您可能需要一个单独的阅读线程。

关于java - 从已被服务器关闭的 SSL 套接字读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25085973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com