2014-05-02 156 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"/> 

应修复问题

相关问题