안드로이드에 테스트를 해보기 위해서
tcp를 연결했습니다. 클라이언트 - 서버- 클라이언트 했고 메시지가 들어오는 것과 받아지는 것만 하면 될것 같습니다.

 


C:\Documents and Settings\classic66\바탕 화면\client6\AndroidClient6\src\com\AndroidClient6\AndroidClient6.java1
 



public class AndroidClient6 extends Activity {
    /** Called when the activity is first created. */
 private String return_msg;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); //maina.xml을 기준으로 layout을 설정
       
        //서로 연결 3
        final EditText et = (EditText)findViewById(R.id.myEdit);
        final EditText et2 = (EditText)findViewById(R.id.yourEdit);
        Button btn = (Button)findViewById(R.id.Button01);
        final TextView tv = (TextView)findViewById(R.id.TextView01);
       
        btn.setOnClickListener(new OnClickListener(){
         public void onClick(View v){
         
           //버튼 클릭 TCPclient호출, 인자로 editet안에 있는것을 한다.
           //tcp는 속에서 무한 호출한다.
          if(et.getText().toString() != null || !et.getText().toString().equals("")){
          
          
          
           TCPclient tp = new TCPclient(et.getText().toString());
    
           Log.d("own", "C: FirstSending: " + et.getText().toString() + "'");
          
          }
         }
        });
            
    }
  
   
public class TCPclient implements Runnable
{
        private static final int serverPort = 6638;
        private static final String serverIP = "202.30.106.30";

        private String msg;
        PrintWriter printWriter;
        BufferedReader bufferedReader;
      
        Socket socket;
      
        public TCPclient(String _msg)
        {
         this.msg =_msg;
   try {
    socket = new Socket("202.30.106.30", 6638);
    printWriter = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
    bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));    
    
    Thread thread = new Thread(this);
    thread.start();
   
    while(true){    

     String return_msg = bufferedReader.readLine();
      Log.d("readMessage",return_msg);
   
    }    
   } catch (Exception e) {
    e.printStackTrace();
   } finally {
    try { if ( bufferedReader != null ) bufferedReader.close(); } catch ( Exception ignored) {}
    try { if ( printWriter != null ) printWriter.close(); } catch ( Exception ignored) {}
    try { if ( socket != null ) socket.close(); } catch ( Exception ignored) {}
   }            
        }     
        @Override
        public void run()
        {
         try { 
              try {                         
                 printWriter.println(msg);//쓴다.쓴다? server에다 보낸다.!!!!!!!!!!!!
                 Log.d("SendMessage",msg);
              }
              catch(Exception e) {
                       Log.e("TCP", "C: Error1", e);
               }
              finally {
                 socket.close();//마지막으로 닫고 끝낸다.
               }           
          }
         catch (Exception e) {
                    Log.e("TCP", "C: Error2", e);
               }
        }
       
}
   }


 이런 식으로 메시지를 주고, 받기만 하면 될것 같은데 잘 안되네요.. 주는 건 되는데 받는게 잘 안 됩니다..

로그에서 확인했고요. 주는건 잘 주고 서버에서 잘 받는데 받지를 못하네요. 에러는

06-10 16:13:24.996: WARN/System.err(478): java.net.SocketException: The socket argument is not a valid file descriptor
06-10 16:13:25.022: WARN/System.err(478):     at org.apache.harmony.luni.net.SocketInputStream.available(SocketInputStream.java:50)
06-10 16:13:25.022: WARN/System.err(478):     at java.io.InputStreamReader.read(InputStreamReader.java:263)
06-10 16:13:25.032: WARN/System.err(478):     at java.io.BufferedReader.fillbuf(BufferedReader.java:126)
06-10 16:13:25.032: WARN/System.err(478):     at java.io.BufferedReader.readLine(BufferedReader.java:345)

요게 주요 문제인것 같습니다.  서버쪽까지는 잘 들어오는데 실제로 안드로이드에서 찍으려면 저런 오류를 내면서 되지가 않네요 ㅠㅠ