2012-11-22 78 views
1

如何在創建SSLSocket時設置本地端口?Java SSLSocket - 如何設置本地端口

這是我如何創建套接字:

SSLSocketFactory factory = (SSLSocketFactory)SSLSocketFactory.getDefault(); 
SSLSocket s = (SSLSocket) factory.createSocket(SERVER_ADDRESS, SERVER_PORT); 

看來可是沒有設置LOCAL_PORT參數和SSLSocket的不工作的構造,要麼的createSocket方法。

由於

+0

您是否考慮閱讀Javadoc? – EJP

+0

嗯,其實我也讀過了。如果你也讀過它,你會看到SSLSocket沒有實現一個允許你設置本地端口的方法。 –

+0

我讀了很多次,謝謝,那裏肯定是一種方法,雖然沒有人說它是在SSLSocket中。見@ Philipp的答案。注意大約十年你不需要添加該提供商。 – EJP

回答

2

有其通過從SSLSocketFactory的繼承的SocketFactory所述的createSocket方法,這需要主機和端口的變體。見the documentation

+0

以及我需要一個SSLSocket不是一個正常的套接字。因爲服務器要求。 –

+0

你將得到一個SSLSocket。 SSLSocketFactory擴展了SocketFactory,並且SSLSocket擴展了Socket。當您調用SSLSocketFactory的createSocket方法時,即使它從SocketFactory繼承了此特定變體的方法聲明,它也會返回一個SSLSocket。但是,它會將其「僞裝」爲正常的套接字引用。但是你應該能夠將返回的套接字向下轉換爲SSLSocket。 – Philipp

+0

@HasanTahsin,你嘗試過哪種方法不行?在你的'SSLSocketFactory'上調用'createSocket(String host,int port,InetAddress localHost,int localPort)'是要走的路。爲什麼這會是一個不好的方法呢? – Bruno