package AndroidClient.map;

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

import android.util.Log;

class ChatClient extends Thread
{
    private Socket          mSocket          = null;    
    private BufferedReader  mNetworkReader   = null;
    private BufferedWriter  mNetworkWriter   = null;    
    private PrintWriter     mOut             = null;
   
    private String          mName            = "";
    private final String    mIp              = "xxx.xxx.xxx.xxx";
    private final int       mPort            = 9999;
   
    private Thread          mThRcv           = null;   
    private AndroidClient   mMain            = null;
   
    public ChatClient(String name, AndroidClient main)
    {
     this.mName    = name;
     this.mMain    = main;
     initClient();   
    }
    private void initClient()
    {     
     try
     {
            setSocket();             
        }
     catch (IOException e1)
     {
         Log.i("<EXCEPTION>", "setSocket Exception");
            e1.printStackTrace();
        }
    }
    private void setSocket() throws IOException {
     mSocket        = new Socket(this.mIp, this.mPort);
        mNetworkWriter = new BufferedWriter(new OutputStreamWriter(mSocket.getOutputStream()));
        mNetworkReader = new BufferedReader(new InputStreamReader(mSocket.getInputStream()));
        mOut           = new PrintWriter(mNetworkWriter, true);
       
        mThRcv         = new Thread(this);
        mThRcv.start();
        sendMsg(this.mName);
    }
    public void closeAll() throws Exception
    {
     sendMsg("Good Bye");
     
     this.mSocket.close();
     this.mOut.close();
     this.mNetworkReader.close();     
     this.mNetworkWriter.close();
    }
    public void run()
    {
     while(true) recieveData();
    }
    public synchronized void recieveData()
    {
     String line = "";
        try
        {               
            line = mNetworkReader.readLine();
            this.mMain.setResultText(line);
        }
        catch (NullPointerException e)
        {
         Log.i("<EXCEPTION>", e.getMessage());         
        }
        catch (IOException e)
        {
         Log.i("<EXCEPTION>", e.getMessage());         
        }
        catch (Exception e)
        {
         Log.i("<EXCEPTION>", "readMsg THREAD Exception");         
        }
    }
    public void sendMsg(String msg) throws IOException
    {     
     if("" == msg) return;
        this.mOut.println(msg);
        this.mOut.flush();
    }
}



이 프로그램은 Client Program으로 Thread를 돌려서 Recieve Data를 하고 있는중에 받은 데이터를
Main클래스의 TextView로 넘겨주기위한 this.mMain.setResultText(line); 메서드를 실행할 때,
Exception이 뜨는데 어떠한이유인지를 몰라서 여쭙습니다. 좋은하루되세요.