首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >本地主机上的Java和SSL

本地主机上的Java和SSL
EN

Stack Overflow用户
提问于 2012-11-26 06:58:13
回答 1查看 614关注 0票数 0

我正尝试在我的本地机器上试用一个SSLServerSocket程序-(该程序旨在使用普通套接字或基于服务器对象的构造函数的单个参数的SSL套接字)。在普通数据中,程序完全按照预期工作,但使用SSL:

代码语言:javascript
复制
socket.getInputStream().read();

即使远端关闭,也始终返回65535 (即0xFFFF)。知道出什么问题了吗?如果有帮助,我可以发布代码。

提前感谢

编辑:好了,现在我醒了--正如下面的人正确指出的那样,这是一种“断开连接”的类型(isClosed仍然返回false,等等,但输入流只有-1)。

看一下SSL的调试信息,我注意到了这个gem:

代码语言:javascript
复制
***
pool-2-thread-1, WRITE: TLSv1.1 Handshake, length = 36
%% Cached server session: [Session-3, TLS_ECDHE_RSA_WITH_RC4_128_SHA]
pool-2-thread-1, received EOFException: ignored
pool-2-thread-1, called closeInternal(false)
pool-2-thread-1, SEND TLSv1.1 ALERT:  warning, description = close_notify
pool-2-thread-1, WRITE: TLSv1.1 Alert, length = 22
pool-2-thread-1, called closeSocket(selfInitiated)
After use

从代码中:

代码语言:javascript
复制
final SSLSocket socket = (SSLSocket) ((SSLServerSocket)_ServerSocket).accept();
System.out.println("Before use");
socket.getInputStream().read();
System.out.println("After use");

因此,我认为客户端(在这种情况下是浏览器)在没有正确地说“再见”的情况下挂断了。

考虑到我的预期用途是SSL/TLS上的websocket ( wss: //localhost:/),我尝试添加一个证书设置并将其添加到Windows7的信任证书中,但它似乎仍然不起作用( html文件在我的本地系统上,而连接是到上面的wss: URL,那么keygen.exe的服务器别名应该是localhost吗?)。

你知道我还会错在哪里吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-26 10:49:31

你弄错了。read()从不返回0xFFFF。但是,当对等节点关闭时,它会返回-1 (0xFFFFFFFFF)。请参阅Javadoc。您需要将结果存储在一个int中,而不是一个字节中,因此您可以将表示-1 \f25 EOS -1\f6的-1\f25 0xFF -1\f6区分为一个字节的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13556459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档