2016-07-20 12 views
1

最近、tcp経由でc#サーバに接続するアンドロイド上にアプリケーションを作成したいと考えました。サーバーが作成され、ポートも開かれます。Android TCPソケットエラー

問題は、私のアンドロイドアプリケーションが原因のエラーです:

07-20 02:11:52.057 1262-1262/connector.de.connect2 W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable 
07-20 02:11:52.122 1262-1262/connector.de.connect2 D/MyApp: I am here 
07-20 02:11:52.122 1262-1262/connector.de.connect2 W/System.err: java.net.SocketException: socket failed: EACCES (Permission denied) 
07-20 02:11:52.122 1262-1262/connector.de.connect2 W/System.err:  at libcore.io.IoBridge.socket(IoBridge.java:619) 
07-20 02:11:52.122 1262-1262/connector.de.connect2 W/System.err:  at java.net.PlainSocketImpl.create(PlainSocketImpl.java:198) 
07-20 02:11:52.122 1262-1262/connector.de.connect2 W/System.err:  at java.net.Socket.startupSocket(Socket.java:584) 
07-20 02:11:52.122 1262-1262/connector.de.connect2 W/System.err:  at java.net.Socket.tryAllAddresses(Socket.java:128) 
07-20 02:11:52.122 1262-1262/connector.de.connect2 W/System.err:  at java.net.Socket.<init>(Socket.java:178) 
07-20 02:11:52.122 1262-1262/connector.de.connect2 W/System.err:  at java.net.Socket.<init>(Socket.java:150) 
07-20 02:11:52.123 1262-1262/connector.de.connect2 W/System.err:  at connector.de.connect2.MainActivity.onCreate(MainActivity.java:41) 
07-20 02:11:52.123 1262-1262/connector.de.connect2 W/System.err:  at android.app.Activity.performCreate(Activity.java:6251) 
07-20 02:11:52.123 1262-1262/connector.de.connect2 W/System.err:  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108) 
07-20 02:11:52.123 1262-1262/connector.de.connect2 W/System.err:  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2403) 
07-20 02:11:52.123 1262-1262/connector.de.connect2 W/System.err:  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2520) 
07-20 02:11:52.123 1262-1262/connector.de.connect2 W/System.err:  at android.app.ActivityThread.-wrap11(ActivityThread.java) 
07-20 02:11:52.123 1262-1262/connector.de.connect2 W/System.err:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363) 
07-20 02:11:52.123 1262-1262/connector.de.connect2 W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:102) 
07-20 02:11:52.123 1262-1262/connector.de.connect2 W/System.err:  at android.os.Looper.loop(Looper.java:148) 
07-20 02:11:52.123 1262-1262/connector.de.connect2 W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:5466) 
07-20 02:11:52.123 1262-1262/connector.de.connect2 W/System.err:  at java.lang.reflect.Method.invoke(Native Method) 
07-20 02:11:52.123 1262-1262/connector.de.connect2 W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
07-20 02:11:52.123 1262-1262/connector.de.connect2 W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
07-20 02:11:52.123 1262-1262/connector.de.connect2 W/System.err: Caused by: android.system.ErrnoException: socket failed: EACCES (Permission denied) 
07-20 02:11:52.123 1262-1262/connector.de.connect2 W/System.err:  at libcore.io.Posix.socket(Native Method) 
07-20 02:11:52.123 1262-1262/connector.de.connect2 W/System.err:  at libcore.io.BlockGuardOs.socket(BlockGuardOs.java:282) 
07-20 02:11:52.123 1262-1262/connector.de.connect2 W/System.err:  at libcore.io.IoBridge.socket(IoBridge.java:604) 
07-20 02:11:52.123 1262-1262/connector.de.connect2 W/System.err: ... 18 more 

私は自分のアプリケーションがmanifest.xmlにして

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

を次のコードを欠落していることを読んで、私は "など、多くのバージョンを試してみましたACCESS_NETWORK_STATE "、" ACCESS_NETWORK_STATE "など

何も変更されず、エラーが表示されたり、アプリが完全にクラッシュしたりします。

私は何をすべきか分かりません。

それはまた、アプリケーション自体のコードを助けた場合はここにある:

しようとした変化と
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Log.d("MyApp","I am here"); 
     try 
     { 
      Socket socket = new Socket("192.168.1.3", 1071); 
      PrintWriter pw=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()))); 
      pw.println("Hello"); 
      socket.close(); 
     } 
     catch (UnknownHostException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

そして、ここにたManifest.xml:あなたはdoesnのを提供してきました

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="connector.de.connect2" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="14" /> 
    <use-permission android:name="android.permission.INTERNET" /> 
    <use-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <use-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

答えて

0

logcat出力それは何らかの理由で表示されませんが、メインスレッド(たとえば、onCreate()の内部)でネットワーク操作を実行することはできません。ネットワーク操作をある種のバックグラウンドスレッドにオフロードする必要があります。

+0

ありがとうございます、あなたの投稿をupvoteしますが、私は15ポイントの最低に達していません。私は後でそれをやるでしょう:) –

+0

問題はありません、うまくいけば、あなたはメインスレッドから物事を動かすことでこれを越えることができました。 –

関連する問題