2016-04-11 39 views
0

Düzenleyici'de metinler yazarken ve ardından düğme 'ı tıklattığınızda, Emitör, metin görünümünde görünmüyor. Neyin yanlış olduğunu bilmiyorum .. Bu Sunucu sorunu mu yoksa Müşteri sorun mu? android soket sohbet programı hatası

İşte İstemci (android) kodu.

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 
import java.net.Socket; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

    private Socket sock; 
    BufferedReader din; 
    BufferedWriter dout; 
    EditText text; 
    Button button; 
    TextView output; 
    String msg; 
    String str; 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    text = (EditText)findViewById(R.id.editText);  
    output = (TextView)findViewById(R.id.output); 
    button = (Button) findViewById(R.id.button); 

    button.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View v) { 
      String msg = text.getText().toString(); 
      send(msg); 
      text.setText(""); 
     } 
    }); 




    Thread Th = new Thread() { 
     public void run() { 
      try { 

       Socket sock = new Socket("127.0.0.1", 5000); 
       din = new BufferedReader(new InputStreamReader(sock.getInputStream())); 
       dout = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream())); 
       while (true) { 
        str = din.readLine(); 
        output.post(new Runnable() { 
         public void run() { 
          output.setText(str + "\n"); 
         } 
        }); 
       } 
      }catch (Exception e) { 
       e.printStackTrace(); 
      } 

     } 
    }; 
    Th.start(); 
} 



public void send (String msg) { 
    try { 
     dout.write(msg); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

benim kod özellikle TextView'un ve EditText – Hyun

cevap

0

Kullanım emit() ve yazma yerine ve stream.It okuma socket.io.Following nasıl kullanılacağına ilişkin bir örnek here bulabilirsiniz işlemek ve events.You yönetmek kolaydır olaylar basit implementation.Use olduğunu olayları hem sunucu hem de istemci tarafında ne gönderip aldığınızı anlar. Örneğin, istemci "gönder" olayında yayınlarsa, sunucu "gönder" etkinliğindeki mesajı dinlemelidir.

Socket mSocket; 
    try{ 
     mSocket = IO.socket("127.0.0.1:5000"); 
    }catch(URISyntaxException e){ 

    } 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    //use listeners to send receive messages 
     mSocket.connect(); 
     mSocket.on(Socket.EVENT_CONNECT, onConnection); 
     mSocket.on(Socket.EVENT_CONNECT_ERROR, onConnectError); 
     mSocket.on(Socket.EVENT_CONNECT_TIMEOUT, onConnectTimeOut); 
     mSocket.on("message", onNewMessage); 
    } 
    /** 
    * Callback on Socket Connection 
    */ 
    private Emitter.Listener onConnection = new Emitter.Listener() { 
      @Override 
      public void call(final Object... args) { 
       mHandler.post(new Runnable() { 
        @Override 
        public void run() { 
         //connected     } 
       }); 
      } 
     }; 

     /** 
     * Callback on Socket Connection Error 
     */ 
     private Emitter.Listener onConnectError = new Emitter.Listener() { 
      @Override 
      public void call(final Object... args) { 
       mHandler.post(new Runnable() { 
        @Override 
        public void run() { 
         //connection error 
        } 
       }); 
      } 
     }; 

/** 
* Callback on Socket Connection TimeOut 
*/ 
private Emitter.Listener onConnectTimeOut = new Emitter.Listener() { 
     @Override 
     public void call(final Object... args) { 
      mHandler.post(new Runnable() { 
      @Override 
      public void run() { 
       //try to reconnect here 
      } 
     }; 


    /** 
    * Callback on New Message Received 
    */ 
    private Emitter.Listener onNewMessage = new Emitter.Listener() { 
     @Override 
     public void call(final Object... args) { 
      mHandler.post(new Runnable() { 
       @Override 
       public void run() { 
         //handle the message here 
       } 
       }); 
      } 
     }; 

    public void send (String msg) { 
     //just emit on an event and register the event on the server side 
     mSocket.emit("send",msg); 
     //you can customise the message 
    } 
+0

sen ölçüde cevap artıracak ne değiştirdi küçük bir açıklama problem var merak ettim. –