[英]Server socket getting an error permission denied exception android
I have searched a lot on internet and a lot of people had the same problem as mine but none of them solved my problem. 我在互联网上进行了很多搜索,很多人都遇到了与我相同的问题,但没有一个人解决了我的问题。
I have tested this code on genymotion emulater and it worked but on real Android device ie Nexus 4 API 21 it didn't. 我已经在genymotion模拟器上测试了此代码,并且可以运行,但是在真正的Android设备(即Nexus 4 API 21)上却没有。
This is my code in which I got an exception in line ServerSocket=new ServerSocket(11100); 这是我的代码,其中ServerSocket = new ServerSocket(11100)行中有一个异常;
protected String doInBackground(Void... params) {
Socket socket = null;
DataInputStream dataInputStream = null;
// DataOutputStream dataOutputStream = null;
try {
Log.i("aa","making a new server socket");
serverSocket = new ServerSocket(11100);
serverSocket.setSoTimeout(16000);
Log.i("service","listening to port");
socket = serverSocket.accept();
Log.i("service","connection accepted");
dataInputStream = new DataInputStream(
socket.getInputStream());
String messageFromServer = "";
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
messageFromServer = br.readLine();
Log.i("","trying to close server socket");
serverSocket.close();
Log.i("","server socket is closed");
return messageFromServer;
} catch(SocketTimeoutException e){//in case of a timeout exception
Log.i("","timeout exception ");
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if (socket != null) {
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (dataInputStream != null) {
try {
dataInputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return "1"; //means connection failed
}
And this is my android manifest 这是我的Android清单
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.internet"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<service android:name="com.example.hassan.chat.services.MyService" />
<activity
android:name=".LoginActivity"
android:label="@string/app_name"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main">
</activity>
<activity
android:name=".SignInActivity"
android:label="@string/title_activity_sign_in"
android:parentActivityName=".LoginActivity">
</activity>
</application>
And this is my logcat 这是我的logcat
04-10 20:17:00.178 11984-12213/com.example.hassan.chat W/System.err﹕ java.net.SocketException: socket failed: EACCES (Permission denied)
04-10 20:17:00.179 11984-12213/com.example.hassan.chat W/System.err﹕ at libcore.io.IoBridge.socket(IoBridge.java:623)
04-10 20:17:00.179 11984-12213/com.example.hassan.chat W/System.err﹕ at java.net.PlainSocketImpl.create(PlainSocketImpl.java:198)
04-10 20:17:00.179 11984-12213/com.example.hassan.chat W/System.err﹕ at java.net.PlainServerSocketImpl.create(PlainServerSocketImpl.java:38)
04-10 20:17:00.179 11984-12213/com.example.hassan.chat W/System.err﹕ at java.net.ServerSocket.<init>(ServerSocket.java:103)
04-10 20:17:00.179 11984-12213/com.example.hassan.chat W/System.err﹕ at java.net.ServerSocket.<init>(ServerSocket.java:74)
04-10 20:17:00.180 11984-12213/com.example.hassan.chat W/System.err﹕ at com.example.hassan.chat.classes.ListeningHttpSocket.doInBackground(ListeningHttpSocket.java:63)
04-10 20:17:00.180 11984-12213/com.example.hassan.chat W/System.err﹕ at com.example.hassan.chat.classes.ListeningHttpSocket.doInBackground(ListeningHttpSocket.java:39)
04-10 20:17:00.180 11984-12213/com.example.hassan.chat W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:288)
04-10 20:17:00.180 11984-12213/com.example.hassan.chat W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
04-10 20:17:00.180 11984-12213/com.example.hassan.chat W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
04-10 20:17:00.180 11984-12213/com.example.hassan.chat W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
04-10 20:17:00.180 11984-12213/com.example.hassan.chat W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
04-10 20:17:00.181 11984-12213/com.example.hassan.chat W/System.err﹕ at java.lang.Thread.run(Thread.java:818)
04-10 20:17:00.181 11984-12213/com.example.hassan.chat W/System.err﹕ Caused by: android.system.ErrnoException: socket failed: EACCES (Permission denied)
04-10 20:17:00.181 11984-12213/com.example.hassan.chat W/System.err﹕ at libcore.io.Posix.socket(Native Method)
04-10 20:17:00.182 11984-12213/com.example.hassan.chat W/System.err﹕ at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:282)
04-10 20:17:00.182 11984-12213/com.example.hassan.chat W/System.err﹕ at libcore.io.IoBridge.socket(IoBridge.java:608)
04-10 20:17:00.182 11984-12213/com.example.hassan.chat W/System.err﹕ ... 12 more
for anyone interest : i found the solution ,in the android manifest the internet permission should be in capital 对于任何感兴趣的人:我找到了解决方案,在android清单中,互联网许可应大写
uses-permission android:name="android.permission.INTERNET" and not uses-permission android:name="android.permission.internet" 使用权限android:name =“ android.permission.INTERNET”,而不使用权限android:name =“ android.permission.internet”
手机是否与服务器连接在同一网络上?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.