Advertisement
olcayertas

Apache Mina Chat Client

Jan 1st, 2014
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.41 KB | None | 0 0
  1. package com.mukcay.client;
  2.  
  3. import android.app.Activity;
  4. import android.os.AsyncTask;
  5. import android.os.Bundle;
  6. import android.util.Log;
  7. import android.view.View;
  8. import android.widget.EditText;
  9. import android.widget.TextView;
  10.  
  11. import org.apache.mina.core.RuntimeIoException;
  12. import org.apache.mina.core.future.ConnectFuture;
  13. import org.apache.mina.core.service.IoHandlerAdapter;
  14. import org.apache.mina.core.session.IoSession;
  15. import org.apache.mina.filter.codec.ProtocolCodecFilter;
  16. import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
  17. import org.apache.mina.transport.socket.nio.NioSocketConnector;
  18. import org.slf4j.Logger;
  19. import org.slf4j.LoggerFactory;
  20.  
  21. import java.net.InetSocketAddress;
  22.  
  23. public class ClientActivity extends Activity {
  24.  
  25.     private static final String HOSTNAME = "10.0.2.2";
  26.     private static final int PORT = 1234;
  27.     private static final long CONNECT_TIMEOUT = 30 * 1000L; // 30 seconds
  28.     private IoSession session;
  29.     private NioSocketConnector connector;
  30.     private ConnectFuture future;
  31.     private TextView tw;
  32.     private EditText et;
  33.  
  34.     private class TCPTask extends AsyncTask<Void, Void, Void> {
  35.  
  36.         @Override
  37.         protected Void doInBackground(Void... params) {
  38.             connector = new NioSocketConnector();
  39.             connector.setConnectTimeoutMillis(CONNECT_TIMEOUT);
  40.             connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory()));
  41.             connector.setHandler(new ClientSessionHandler());
  42.  
  43.             while(true) {
  44.                 try {
  45.                     future = connector.connect(new InetSocketAddress(HOSTNAME, PORT));
  46.                     future.awaitUninterruptibly();
  47.                     session = future.getSession();
  48.                     Log.d("***************************", "Connected.");
  49.  
  50.                     runOnUiThread(new Runnable() {
  51.                         @Override
  52.                         public void run() {
  53.                             appandMessage("Sunucuya bağlanıldı");
  54.                         }
  55.                     });
  56.  
  57.                     break;
  58.                 } catch (RuntimeIoException e) {
  59.                     Log.d("***************************", "Failed to connect.");
  60.                     e.printStackTrace();
  61.                     try {
  62.                         Thread.sleep(5000);
  63.                     } catch (InterruptedException e1) {
  64.                         e1.printStackTrace();
  65.                     }
  66.                 }
  67.             }
  68.  
  69.             // wait until the summation is done
  70.             session.getCloseFuture().awaitUninterruptibly();
  71.             connector.dispose();
  72.             return null;
  73.         }
  74.  
  75.         @Override
  76.         protected void onPostExecute(Void aVoid) {
  77.             super.onPostExecute(aVoid);
  78.             appandMessage("Bağlantı kapandı!\n");
  79.         }
  80.     }
  81.  
  82.     public class ClientSessionHandler extends IoHandlerAdapter {
  83.         private final Logger LOGGER = LoggerFactory.getLogger(ClientSessionHandler.class);
  84.         private boolean finished;
  85.  
  86.         public void sessionOpened(IoSession s) {
  87.             session = s;
  88.         }
  89.  
  90.         public void messageReceived(IoSession session, Object message) {
  91.             final String mes = (String)message;
  92.             runOnUiThread(new Runnable() {
  93.                 @Override
  94.                 public void run() {
  95.                     appandMessage("Mesaj alındı: " + mes + "\n");
  96.                 }
  97.             });
  98.         }
  99.     }
  100.  
  101.     @Override
  102.     protected void onCreate(Bundle savedInstanceState) {
  103.         super.onCreate(savedInstanceState);
  104.         setContentView(R.layout.activity_client);
  105.         tw = (TextView) findViewById(R.id.messageBoard);
  106.         et = (EditText) findViewById(R.id.message);
  107.     }
  108.  
  109.     public void connectToServerButtonClicked(View v) {
  110.         Log.d("***************************", "connectToServerButtonClicked");
  111.         new TCPTask().execute();
  112.     }
  113.  
  114.     public void sendMessageButtonClicked(View v) {
  115.         Log.d("***************************", "sendMessageButtonClicked");
  116.         if (session == null) {
  117.             Log.d("***************************", "Session is null");
  118.             return;
  119.         }
  120.  
  121.         session.write(et.getText());
  122.         et.setText("");
  123.     }
  124.  
  125.     public void appandMessage(String message) {
  126.         tw = (TextView) findViewById(R.id.messageBoard);
  127.         tw.append(message);
  128.     }
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement