我可以为http和https会话使用SSLServerSocket类,并且可以听一个端口(自动检测客户端是否带有http或https)?或者必须打开两个端口并使用SSLServerSocket作为https和ServerSocket的http?SSLSocket也适用于不安全的http?
感谢
我可以为http和https会话使用SSLServerSocket类,并且可以听一个端口(自动检测客户端是否带有http或https)?或者必须打开两个端口并使用SSLServerSocket作为https和ServerSocket的http?SSLSocket也适用于不安全的http?
感谢
你正在试图做的,什么叫端口统一。例如,它是implemented in Grizzly。
你真的不能使用SSLServerSocket
直接听HTTP和HTTPS流量,因为它会直接在阅读开始握手,但你可以有一个简单的ServerSocket
,接受一个普通的Socket
,尝试你什么时候检测通过读取前几个字节获取TLS客户端hello或HTTP请求,然后convert it to an SSLSocket
。
我不能说我已经试过Socket
s,但是您需要提前阅读TLS客户端Hello,并在必要时将其推回,possibly using a PushBackInputStream
, as suggested by EJP。
(据我所知灰熊使用SSLEngine
,而不是SSLSocket
这一点。)
注意,使用端口统一是相当不寻常。我不确定未来阅读的开销是多少。使用多个端口通常不是问题(此外,HTTP和HTTPS具有不同的默认端口,因此您必须在两个URL中的至少一个中指定端口)。
谢谢,这真的有帮助 – Igor 2013-03-15 12:07:49
你想用'SSLServerSocket'与端口443上的客户端进行HTTP通话吗?如果这是可能的,我会很惊讶,但一定要亲自尝试一下。 – 2013-03-15 11:05:59
请检查这个答案,我给了一次,这可能会有所帮助。 http://stackoverflow.com/a/13450695/655756 – n1ckolas 2013-03-15 11:06:17