package soo.net;

import java.io.*;
import java.net.Socket;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.*;

public class SocketTest extends Activity  {	
	EditText et1, et2;
	Button b1, b2, b3;
	Thread th;
	
	private Handler h = new Handler(){
		@Override
		public void handleMessage(Message msg){
			et1.append("Server >> " + msg.obj.toString() + "\n");
		}
	};
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        et1 = (EditText)findViewById(R.id.editText01);
        et2 = (EditText)findViewById(R.id.editText02);
        b1 = (Button)findViewById(R.id.button01);
        b2 = (Button)findViewById(R.id.button02);
        b3 = (Button)findViewById(R.id.button03);
        
        b1.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				connect();
			}
		});
        b2.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				String msg = et2.getText().toString();
				write(msg);
				et1.append(msg + "\n");
				et2.setText("");
			}
		});
        b3.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
		    	
		    	th = new Thread(new Runnable(){
		    		String str = "";
		    		
		        	@Override
		        	public void run(){
		        		try{
		        			while(true){
		        				str = dis.readUTF();
		        				Log.i("server MSG  : ", str);
		        				Message msg = h.obtainMessage();
		        				msg.obj = str;
		        				SocketTest.this.h.sendMessage(msg);
		        			}
		        		}catch(Exception e){
		        			Log.e("th-run()" , e.toString());
		        		}
		        	}
		        });
		    	th.start();
			}
		});
    }
    
    private Socket s;
    private InputStream is;
    private OutputStream os;
    private DataInputStream dis;
    private DataOutputStream dos;
    
    private void connect(){
        try{
        	s = new Socket("192.168.0.42", 5000);
        	Log.i("socket created", s.toString());
        	is = s.getInputStream();
        	os = s.getOutputStream();
        	dis = new DataInputStream(is);
        	dos = new DataOutputStream(os);
        	
        }catch(Exception e){
        	Log.e("socket not exists", s.toString());
        }
    }
    
    private void write(String msg){
    	try{
    		dos.writeUTF(msg);
    		dos.flush();
    	}catch(IOException ie){
    	}
    }
}



