首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否在握手完成之前阻止SSLSocket?

是否在握手完成之前阻止SSLSocket?
EN

Stack Overflow用户
提问于 2012-10-18 21:59:04
回答 1查看 3.9K关注 0票数 4

有没有办法让SSLSocket在不使用addHandshakeListener()方法的情况下等待握手完成?我希望它被阻塞,直到它完成握手。

Edit:更多说明:最初使用的是常规(非SSL)套接字(这是必需的,因为在实际握手之前必须将包发送到服务器)。此套接字使用SSlSocketFactory.createSocket“转换”为SSLSocket。我的问题是,现在是否有一种同步握手的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-31 05:48:29

SSLSocket.startHandshake()是一个同步调用,当您第一次开始对等体之间的握手时,它将阻塞调用线程,直到握手完成:

代码语言:javascript
复制
... ...

// initial handshake between peers, don't need Listener:
sslSocket.startHandshake(); // <- this will block the calling thread.
// handshake is completed at this point

... ...

这在Android API中没有完整的文档,请参阅原始Java API以获取完整的javadoc:

在此连接上启动SSL握手。常见原因包括需要使用新的加密密钥、更改密码套件或启动新会话。要强制完全重新验证,可以在开始此握手之前使当前会话无效。

如果数据已经在连接上发送,它将在此握手期间继续流动。当握手完成时,这将用一个事件来通知。此方法与连接上的初始握手同步,并在协商的握手完成时返回。某些协议可能不支持现有套接字上的多次握手,并可能引发IOException。

如果你在对等体之间多次握手,情况会变得相当复杂,在某些情况下(当你需要侦听器时),这可能是一个异步调用,请查看这个在线文档Fundamental Networking in Java以了解更多详细信息。

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

https://stackoverflow.com/questions/12956449

复制
相关文章

相似问题

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