我正在运行Netty 3.3.1安全聊天示例,它出错了。它似乎是客户端遇到问题 - 错误显示“客户端/服务器模式尚未设置。”
我阅读了有关SSLHandler的文档,其中写道:“如果isIssueHandshake为false(默认),您需要自己处理调用握手。在大多数情况下,SslHandler用于'客户端模式'您想要发出建立连接后握手。如果setIssueHandshake设置为true,则不需要担心这一点,因为SslHandler会处理它。“
我尝试在调用sslHandler.handshake方法之前在客户端中将setIssueHandshake设置为true,但这并未更改/修复错误。
任何猜测?
感谢您为此netty新手提供任何帮助!
这是客户端输出:
2012年3月2日上午10:25:27 securechat.SecureChatClientHandler handleUpstream 信息:[id:0x00c2a132] OPEN 2012年3月2日上午10:25:27 securechat.SecureChatClientHandler handleUpstream 信息:[id:0x00c2a132,/ 127.0.0.1:3082 => localhost / 127.0.0.1:8443] BOUND:/127.0.0.1:3082 2012年3月2日上午10:25:27 securechat.SecureChatClientHandler handleUpstream 信息:[id:0x00c2a132,/ 127.0.0.1:3082 => localhost / 127.0.0.1:8443] CONNECTED:localhost / 127.0.0.1:8443 2012年3月2日上午10:25:27 securechat.SecureChatClientHandler exceptionCaught 警告:下游出现意外异常。 java.lang.IllegalStateException:尚未设置客户端/服务器模式。 at com.sun.net.ssl.internal.ssl.SSLEngineImpl.kickstartHandshake(SSLEngineImpl.java:609) at com.sun.net.ssl.internal.ssl.SSLEngineImpl.beginHandshake(SSLEngineImpl.java:667) 在org.jboss.netty.handler.ssl.SslHandler.handshake(SslHandler.java:358) 在securechat.SecureChatClientHandler.channelConnected(SecureChatClientHandler.java:54) 在securechat.SecureChatClientHandler.handleUpstream(SecureChatClientHandler.java:43) 在org.jboss.netty.handler.codec.oneone.OneToOneDecoder.handleUpstream(OneToOneDecoder.java:61) 在org.jboss.netty.handler.ssl.SslHandler.channelConnected(SslHandler.java:1202) 在org.jboss.netty.channel.Channels.fireChannelConnected(Channels.java:227) 在org.jboss.netty.channel.socket.nio.NioWorker $ RegisterTask.run(NioWorker.java:786) 在org.jboss.netty.channel.socket.nio.NioWorker.processRegisterTaskQueue(NioWorker.java:250) 在org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:192) at java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:908) 在java.lang.Thread.run(Thread.java:619)
这是服务器输出:
信息:[id:0x01893efe,/ 127.0.0.1:3082 => /127.0.0.1:8443]开放 2012年3月2日上午10:25:27 securechat.SecureChatServerHandler handleUpstream 信息:[id:0x01893efe,/ 127.0.0.1:3082 => /127.0.0.1:8443] BOUND:/127.0.0.1:8443 2012年3月2日上午10:25:27 securechat.SecureChatServerHandler handleUpstream 信息:[id:0x01893efe,/ 127.0.0.1:3082 => /127.0.0.1:8443]已连接:/127.0.0.1:3082
答案 0 :(得分:3)
这是示例中的已知错误。如果您查看SecureChatClientPipelineFactory.java
,您会发现调用SSLEngine.setUseClientMode(true)
的行已被错误地注释掉了。请取消注释,然后它将工作。此问题已在3.4.0.Alpha1中修复。
答案 1 :(得分:0)
谢谢您的信任。似乎“此问题已在3.4.0.Alpha1中修复。”不正确。
sslEngine.setUseClientMode(true);
它在4.1.33.Final上再次起作用。