[英]Android - ServerSocket permission denied
I'm trying to setup a TCP connection between my Android phone and my Raspberry Pi. 我正在尝试在我的Android手机和我的Raspberry Pi之间建立TCP连接。 Should be easy, turns out it isn't ?
应该很容易,事实证明不是吗? So i started writing a simple server with ServerSocket .
所以我开始用ServerSocket编写一个简单的服务器。 It didn't work so i reduced the code until i got this piece which is not working:
它没有工作,所以我减少了代码,直到我得到这个不起作用的一块:
try
{
String wifiip = wifiIpAddress(this);
Log.v("SERVER", wifiip);
ServerSocket serverSocket = new ServerSocket();
serverSocket.setReuseAddress(true);
serverSocket.bind(new InetSocketAddress(wifiip, 4117));
}catch (Exception ex)
{
ex.printStackTrace();
}
(The code is located in the onCreate method in my MainActivity which was created by AndroidStudio) (代码位于我的MainActivity中的onCreate方法,该方法由AndroidStudio创建)
I also tried to create the ServerSocket with this method with no success. 我也尝试用这种方法创建ServerSocket但没有成功。
ServerSocket serverSocket = new ServerSocket(4117);
The method wifiIpAddress was taken from here: https://stackoverflow.com/a/18638588/2394967 and works just fine. 方法wifiIpAddress取自这里: https ://stackoverflow.com/a/18638588/2394967,工作得很好。
The AndroidManifest.xml AndroidManifest.xml
<manifest ...>
<uses-sdk android:targetSdkVersion="21"></uses-sdk>
<uses-permission android:name="ANDROID.PERMISSION.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
...
</manifest>
Maybe useful informations: 也许有用的信息:
Logcat logcat的
java.net.SocketException: socket failed: EACCES (Permission denied)
W/System.err﹕ at libcore.io.IoBridge.socket(IoBridge.java:632)
W/System.err﹕ at java.net.PlainSocketImpl.create(PlainSocketImpl.java:198)
W/System.err﹕ at java.net.PlainServerSocketImpl.create(PlainServerSocketImpl.java:38)
W/System.err﹕ at java.net.ServerSocket.<init>(ServerSocket.java:64)
W/System.err﹕ at eu.therealskynet.socketstest.MainActivity.onBtSendClicked(MainActivity.java:47)
W/System.err﹕ at java.lang.reflect.Method.invoke(Native Method)
W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:372)
W/System.err﹕ at android.view.View$1.onClick(View.java:4078)
W/System.err﹕ at android.view.View.performClick(View.java:4832)
W/System.err﹕ at android.view.View$PerformClick.run(View.java:19839)
W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:739)
W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:95)
W/System.err﹕ at android.os.Looper.loop(Looper.java:211)
W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5333)
W/System.err﹕ at java.lang.reflect.Method.invoke(Native Method)
W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:372)
W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1016)
W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811)
W/System.err﹕ Caused by: android.system.ErrnoException: socket failed: EACCES (Permission denied)
W/System.err﹕ at libcore.io.Posix.socket(Native Method)
W/System.err﹕ at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:282)
W/System.err﹕ at libcore.io.IoBridge.socket(IoBridge.java:617)
W/System.err﹕ ... 17 more
I don't even know what "socket failed: EACCES (Permission denied)" is supposed to tell me... 我甚至不知道“套接字失败了:EACCES(Permission denied)”应该告诉我......
I'll just post the answer myself. 我会自己发布答案。
The problem was that this is case sensitive : 问题是这是区分大小写的 :
ANDROID.PERMISSION.INTERNET
And has to be written like this: 必须这样写:
android.permission.INTERNET
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.