【发布时间】:2011-09-25 22:07:41
【问题描述】:
一个简单的服务器
listen = getServer();
Logger.getAnonymousLogger().info("Listening to "+listen.toString());
SSLSocket client = (SSLSocket)listen.accept();
// adding this line fixes everything - client.write(42);
client.close();
还有一个简单的客户
SocketFactory sockMaker = SSLSocketFactory.getDefault();
Socket server = sockMaker.createSocket("localhost", 1443);
int retval = server.getInputStream().read();
assert retval == -1;
server.close();
如果我不向 SSL Socket 写入任何内容,则会在客户端抛出异常:
Exception in thread "main" javax.net.ssl.SSLException:\
Received close_notify during handshake
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:190)
我不明白为什么会这样。 SSL/TLS 规范是否要求您将内容写入套接字?
请参阅full example。
【问题讨论】:
-
您的命名约定对于
client和server套接字是什么有点混乱。此外,客户端代码在你的 GitHub 上的SSLNullServer目录中,你的服务器代码在你的SSLNullClient目录中。 -
@Bruno,你的观点是有效的,我的错。关于命名约定,
Socket client应该是Socket toClient才有意义。