2017-03-16 5 views
0

私は現在、2つのアンドロイドデバイス間でJavaソケットを使用して簡単なチャットアプリケーションを作成しています 私の問題はクライアントがサーバに接続した後にIPアドレスとポートを完全に入力したときです。 クライアント側突然クライアントからサーバに任意のテキストを送信しようと、私は多くのことを検索止めるが、私はそれは私のコードクライアント側はサーバにテキストを送信しません

サーバー側で間違っているものを見つけることができませんでした:

Thread TH=new Thread(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        status.setText("hosted on"+ ip); 
        ss=new ServerSocket(8080); 
        while(true) { 
         S = ss.accept(); 

         status.post(new Runnable() { 
             @Override 
             public void run() { 
              status.setText("connected"); 
             } 
            } 
         ); 
         CommunicationThread commThread = new CommunicationThread(S); 
         new Thread(commThread).start(); 

    class CommunicationThread implements Runnable { 
     private Socket ClientSocket; 
     DataInputStream DIS; 

     public CommunicationThread(Socket ClientSocket) throws IOException { 
      this.ClientSocket = ClientSocket; 

      DIS = new DataInputStream(ClientSocket.getInputStream()); 
      data = DIS.readUTF(); 
     } 
     public void run() { 
      while (!Thread.currentThread().isInterrupted()) { 

       data = data.toString(); 
       tv_receive.post(new Runnable() { 

        public void run() { 
         tv_receive.setText(data); 
        } 

クライアント側:

btn_connect.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       TH=new Thread(new Runnable() { 
        @Override 
        public void run() { 
         try { 
          S = new Socket(et_IP_Address.getText().toString(),Integer.parseInt(et_port.getText().toString())); 
          DOS = new DataOutputStream(S.getOutputStream()); 


         } catch (IOException e) { 
          e.printStackTrace(); 
         } 

        } 
       });// End of thread 
       TH.start(); 
      } 
     }); // end of buutton 

     // Sending 
     btn_send.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       TH=new Thread(new Runnable() { 
        @Override 
        public void run() { 
         try { 
          //while(true) { 

          DOS.write(Integer.parseInt(et_message.getText().toString())); 
          tv_transmit.post(new Runnable() { 
           @Override 
           public void run() { 
            tv_transmit.setText(et_message.getText()); 

           } 
          }); 
          try { 
           DOS.flush(); 
          } 
          catch (IOException e) { 
           e.printStackTrace(); 
          } 

          // } 
         } 
         catch (IOException e) { 
          e.printStackTrace(); 
         } 

         try { 
          DOS.close(); 

         } catch (IOException e) { 
          e.printStackTrace(); 
         } 

私は、クライアントがクラッシュした後に何を得ること::

03-16 10:55:09.434 5521-5521/? D/dalvikvm: Not late-enabling CheckJNI (already on) 
03-16 10:55:09.554 5521-5521/app.droid.moring E/Trace: error opening trace file: No such file or directory (2) 
03-16 10:55:09.804 5521-5521/app.droid.moring I/dalvikvm: Could not find method android.app.Application.registerOnProvideAssistDataListener, referenced from method com.android.tools.fd.runtime.BootstrapApplication.registerOnProvideAssistDataListener 
03-16 10:55:09.804 5521-5521/app.droid.moring W/dalvikvm: VFY: unable to resolve virtual method 232: Landroid/app/Application;.registerOnProvideAssistDataListener (Landroid/app/Application$OnProvideAssistDataListener;)V 
03-16 10:55:09.804 5521-5521/app.droid.moring D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002 
03-16 10:55:09.804 5521-5521/app.droid.moring I/dalvikvm: Could not find method android.app.Application.unregisterOnProvideAssistDataListener, referenced from method com.android.tools.fd.runtime.BootstrapApplication.unregisterOnProvideAssistDataListener 
03-16 10:55:09.804 5521-5521/app.droid.moring W/dalvikvm: VFY: unable to resolve virtual method 235: Landroid/app/Application;.unregisterOnProvideAssistDataListener (Landroid/app/Application$OnProvideAssistDataListener;)V 
03-16 10:55:09.804 5521-5521/app.droid.moring D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002 
03-16 10:55:09.804 5521-5521/app.droid.moring I/InstantRun: Instant Run Runtime started. Android package is app.droid.moring, real application class is null. 
03-16 10:55:09.804 5521-5521/app.droid.moring W/InstantRun: No instant run dex files added to classpath 
03-16 10:55:09.824 5521-5521/app.droid.moring E/dalvikvm: Could not find class 'android.util.ArrayMap', referenced from method com.android.tools.fd.runtime.MonkeyPatcher.monkeyPatchExistingResources 
03-16 10:55:09.824 5521-5521/app.droid.moring W/dalvikvm: VFY: unable to resolve check-cast 1901 (Landroid/util/ArrayMap;) in Lcom/android/tools/fd/runtime/MonkeyPatcher; 
03-16 10:55:09.824 5521-5521/app.droid.moring D/dalvikvm: VFY: replacing opcode 0x1f at 0x025e 
03-16 10:55:09.824 5521-5521/app.droid.moring E/dalvikvm: Could not find class 'android.util.ArrayMap', referenced from method com.android.tools.fd.runtime.MonkeyPatcher.pruneResourceCache 
03-16 10:55:09.824 5521-5521/app.droid.moring W/dalvikvm: VFY: unable to resolve const-class 1901 (Landroid/util/ArrayMap;) in Lcom/android/tools/fd/runtime/MonkeyPatcher; 
03-16 10:55:09.824 5521-5521/app.droid.moring D/dalvikvm: VFY: replacing opcode 0x1c at 0x0060 
03-16 10:55:09.874 5521-5521/app.droid.moring I/dalvikvm: Could not find method android.view.Window$Callback.onProvideKeyboardShortcuts, referenced from method android.support.v7.view.WindowCallbackWrapper.onProvideKeyboardShortcuts 
03-16 10:55:09.874 5521-5521/app.droid.moring W/dalvikvm: VFY: unable to resolve interface method 16095: Landroid/view/Window$Callback;.onProvideKeyboardShortcuts (Ljava/util/List;Landroid/view/Menu;I)V 
03-16 10:55:09.874 5521-5521/app.droid.moring D/dalvikvm: VFY: replacing opcode 0x72 at 0x0002 
03-16 10:55:09.874 5521-5521/app.droid.moring W/dalvikvm: VFY: unable to find class referenced in signature (Landroid/view/SearchEvent;) 
03-16 10:55:09.874 5521-5521/app.droid.moring I/dalvikvm: Could not find method android.view.Window$Callback.onSearchRequested, referenced from method android.support.v7.view.WindowCallbackWrapper.onSearchRequested 
03-16 10:55:09.874 5521-5521/app.droid.moring W/dalvikvm: VFY: unable to resolve interface method 16097: Landroid/view/Window$Callback;.onSearchRequested (Landroid/view/SearchEvent;)Z 
03-16 10:55:09.874 5521-5521/app.droid.moring D/dalvikvm: VFY: replacing opcode 0x72 at 0x0002 
03-16 10:55:09.874 5521-5521/app.droid.moring I/dalvikvm: Could not find method android.view.Window$Callback.onWindowStartingActionMode, referenced from method android.support.v7.view.WindowCallbackWrapper.onWindowStartingActionMode 
03-16 10:55:09.874 5521-5521/app.droid.moring W/dalvikvm: VFY: unable to resolve interface method 16101: Landroid/view/Window$Callback;.onWindowStartingActionMode (Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode; 
03-16 10:55:09.874 5521-5521/app.droid.moring D/dalvikvm: VFY: replacing opcode 0x72 at 0x0002 
03-16 10:55:09.874 5521-5521/app.droid.moring I/dalvikvm: Could not find method android.content.res.TypedArray.getChangingConfigurations, referenced from method android.support.v7.widget.TintTypedArray.getChangingConfigurations 
03-16 10:55:09.874 5521-5521/app.droid.moring W/dalvikvm: VFY: unable to resolve virtual method 681: Landroid/content/res/TypedArray;.getChangingConfigurations()I 
03-16 10:55:09.874 5521-5521/app.droid.moring D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002 
03-16 10:55:09.874 5521-5521/app.droid.moring I/dalvikvm: Could not find method android.content.res.TypedArray.getType, referenced from method android.support.v7.widget.TintTypedArray.getType 
03-16 10:55:09.874 5521-5521/app.droid.moring W/dalvikvm: VFY: unable to resolve virtual method 703: Landroid/content/res/TypedArray;.getType (I)I 
03-16 10:55:09.874 5521-5521/app.droid.moring D/dalvikvm: VFY: replacing opcode 0x6e at 0x0008 
03-16 10:55:09.904 5521-5521/app.droid.moring I/dalvikvm: Could not find method android.widget.FrameLayout.startActionModeForChild, referenced from method android.support.v7.widget.ActionBarContainer.startActionModeForChild 
03-16 10:55:09.904 5521-5521/app.droid.moring W/dalvikvm: VFY: unable to resolve virtual method 16529: Landroid/widget/FrameLayout;.startActionModeForChild (Landroid/view/View;Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode; 
03-16 10:55:09.904 5521-5521/app.droid.moring D/dalvikvm: VFY: replacing opcode 0x6f at 0x0002 
03-16 10:55:09.904 5521-5521/app.droid.moring I/dalvikvm: Could not find method android.content.Context.getColorStateList, referenced from method android.support.v7.content.res.AppCompatResources.getColorStateList 
03-16 10:55:09.904 5521-5521/app.droid.moring W/dalvikvm: VFY: unable to resolve virtual method 418: Landroid/content/Context;.getColorStateList (I)Landroid/content/res/ColorStateList; 
03-16 10:55:09.904 5521-5521/app.droid.moring D/dalvikvm: VFY: replacing opcode 0x6e at 0x0006 
03-16 10:55:09.914 5521-5521/app.droid.moring I/dalvikvm: Could not find method android.content.res.Resources.getDrawable, referenced from method android.support.v7.widget.ResourcesWrapper.getDrawable 
03-16 10:55:09.914 5521-5521/app.droid.moring W/dalvikvm: VFY: unable to resolve virtual method 644: Landroid/content/res/Resources;.getDrawable (ILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; 
03-16 10:55:09.914 5521-5521/app.droid.moring D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002 
03-16 10:55:09.914 5521-5521/app.droid.moring I/dalvikvm: Could not find method android.content.res.Resources.getDrawableForDensity, referenced from method android.support.v7.widget.ResourcesWrapper.getDrawableForDensity 
03-16 10:55:09.914 5521-5521/app.droid.moring W/dalvikvm: VFY: unable to resolve virtual method 646: Landroid/content/res/Resources;.getDrawableForDensity (IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; 
03-16 10:55:09.914 5521-5521/app.droid.moring D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002 
03-16 10:55:09.924 5521-5521/app.droid.moring E/dalvikvm: Could not find class 'android.graphics.drawable.RippleDrawable', referenced from method android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering 
03-16 10:55:09.924 5521-5521/app.droid.moring W/dalvikvm: VFY: unable to resolve instanceof 151 (Landroid/graphics/drawable/RippleDrawable;) in Landroid/support/v7/widget/AppCompatImageHelper; 
03-16 10:55:09.924 5521-5521/app.droid.moring D/dalvikvm: VFY: replacing opcode 0x20 at 0x000c 
03-16 10:55:09.964 5521-5524/app.droid.moring D/dalvikvm: GC_CONCURRENT freed 211K, 10% free 2590K/2860K, paused 5ms+14ms, total 25ms 
03-16 10:55:10.154 5521-5521/app.droid.moring D/libEGL: loaded /system/lib/egl/libEGL_emulation.so 
03-16 10:55:10.154 5521-5521/app.droid.moring D/libEGL: loaded /system/lib/egl/libGLESv1_CM_emulation.so 
03-16 10:55:10.174 5521-5521/app.droid.moring D/libEGL: loaded /system/lib/egl/libGLESv2_emulation.so 

                 [ 03-16 10:55:10.174 5521: 5521 D/   ] 
                 HostConnection::get() New Host Connection established 0xb84e6710, tid 5521 
03-16 10:55:10.314 5521-5521/app.droid.moring W/gralloc_ranchu: Gralloc pipe failed 
03-16 10:55:10.364 5521-5521/app.droid.moring D/OpenGLRenderer: Enabling debug mode 0 
03-16 10:55:32.854 5521-5884/app.droid.moring W/dalvikvm: threadid=16: thread exiting with uncaught exception (group=0xb0ff2908) 
03-16 10:55:32.854 5521-5884/app.droid.moring E/AndroidRuntime: FATAL EXCEPTION: Thread-211 
                   java.lang.NumberFormatException: Invalid int: "hi" 
                    at java.lang.Integer.invalidInt(Integer.java:138) 
                    at java.lang.Integer.parse(Integer.java:375) 
                    at java.lang.Integer.parseInt(Integer.java:366) 
                    at java.lang.Integer.parseInt(Integer.java:332) 
                    at app.droid.moring.MainActivity$2$1.run(MainActivity.java:75) 
                    at java.lang.Thread.run(Thread.java:856) 
+0

が突然通常停止有効な数値の整数値をInteger.parseInt()呼び出しを削除、または入力のいずれかがクラッシュを意味し、クラッシュが常に付属しています例外、logcatにあるスタックトレースエラーを投稿してください。 – Yazan

+1

'data = DIS.readUTF();'。いない!次のwhileループに入れます。 – greenapps

+0

サーバーがreadUTFを使用するようにするには、クライアントがwriteUTFを使用する必要があります。 – greenapps

答えて

0

それは数値

java.lang.NumberFormatExceptionない間は、整数として文字列を解析しようとしている:無効INT: "こんにちは"

これは、この行

Integer.parseInt(et_port.getText().toString()) 
可能性があり

またはそれが75

のでMainactivityライン上にあるこの

DOS.write(Integer.parseInt(et_message.getText().toString())); 

+0

本当にありがとう、それは実際に問題だった –

+0

@ NoranMagdiアーランノーラン、エル3afo :) – Yazan

関連する問題