2014-05-02 249 views
0

我想創建一個服務器套接字使用sslContext.getServerSocketFactory()。createServerSocket(port);createServerSocket返回java.net.SocketException:套接字失敗:EACCES(權限被拒絕)

但是它的例外權限被拒絕。以下是我的完整代碼。

private SSLServerSocket getSslServerSocket(int port) 
     throws GeneralSecurityException { 
    KeyManager[] keyManager = this.mKeyStoreManager.getKeyManagers(); 
    TrustManager[] trustManager = this.mKeyStoreManager.getTrustManagers(); 
    SSLContext sslContext = SSLContext.getInstance("TLS"); 
    sslContext.init(keyManager, trustManager, (SecureRandom) null); 
    SSLServerSocket sslServerSocket = null; 
    try { 

     sslServerSocket = (SSLServerSocket) sslContext 
       .getServerSocketFactory().createServerSocket(port); 
     sslServerSocket.setNeedClientAuth(true); 
     sslServerSocket.setUseClientMode(false); 
    } catch (Exception ex) { 
     Log.e("----Exception", ex.getMessage()); 
    } 

    return sslServerSocket; 
} 

我已經嘗試了多個端口,但我得到了所有相同的錯誤。

以下是異常消息。 java.net.SocketException異常:socket失敗:EACCES(拒絕)

+0

要麼根據@ JiangYD的答案使用系統端口(<= 1023),該端口不應該被刪除,或者您根本沒有足夠的訪問權限來執行套接字操作。我相信有一個Android配置文件必須提供或與應用程序打包才能獲得這些權限。 – EJP

+0

我不認爲在Android和端口號的套接字編程有任何特定的權限,我到目前爲止嘗試過9090,1060,9252。 –

回答

0

我知道這個問題是舊的,但如果有其他人搜索的解決方案:在AndroidManifest.xml加入

<uses-permission android:name="android.permission.INTERNET"/> 

應修復問題

相關問題