Java Server
 import java.io.*;
import java.net.*;
Java Server
public class Server extends Thread{
 static ServerSocket serverSocket = null;
 static Socket socket = null;
 public void run(){
  connect();
  try{
   while(true){
   updateMessage.start();
   sendMessage.start();
   }
  }catch(Exception e){
  }
 }
 private Thread sendMessage = new Thread(){
  public void run(){
   try{
    while(true){
     BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
     BufferedWriter networkWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
     PrintWriter out = new PrintWriter(networkWriter, true);
     out.println(reader.readLine());
     out.flush();
     if(reader.readLine().equals("bye")){
      socket.close();
     }
     networkWriter.close();
     out.close();
     reader.close();
    }
    }catch(Exception e){
   }
  }
 };
 private Thread updateMessage = new Thread(){
  public void run(){
   try{
    while(true){
    BufferedReader networkReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    String str = networkReader.readLine();
    System.out.println("Input : "+str);
    networkReader.close();
    }
   }catch(Exception e){
   }
  }
 };
 public void connect(){
  try{
   System.out.println("소켓 생성중...");
   serverSocket = new ServerSocket(9001);
   while(true){
    socket = serverSocket.accept();
    InetAddress clientHost = socket.getLocalAddress();
    int clientport = socket.getPort();
    System.out.println("연결된 클라이언트 : \n ip : "+clientHost+", 포트 : "+clientport);
   }
  }catch(Exception e){}
 }
 public static void main(String[] args) {
  Thread th = new Thread(new Server());
  th.start();
 }
}

Android Client
 package com.pack.scr;
Android Client
import java.io.*;
import java.net.Socket;
Android Client
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.View.*;
import android.widget.*;
Android Client
public class Control extends Activity {
 static String command;
    private String html = "";
    private Handler mHandler;
 
    private Socket socket;
    private String name;
    private BufferedReader networkReader;
    private BufferedWriter networkWriter;
    private String ip = "203.250.133.238"; // IP
    private int port = 9001; // PORT번호
    protected void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
        try {
            socket.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        Intent client = new Intent(this, ServerService.class);
//        startService(client);
        setContentView(R.layout.control);
        mHandler = new Handler();
 
        try {
            setSocket(ip, port);
        } catch (IOException e1) {
            e1.printStackTrace();
        }
 
        checkUpdate.start();
        Button navigator = (Button)findViewById(R.id.navigator_tab);
        Button rcview = (Button)findViewById(R.id.rcview_tab);
        navigator.setOnClickListener(new OnClickListener(){
            public void onClick(View v)
            {
                Intent intent = new Intent(Control.this, Navigator.class);
                startActivity(intent);
            }});
        rcview.setOnClickListener(new OnClickListener(){
            public void onClick(View v)
            {
                Intent intent = new Intent(Control.this, RCView.class);
                startActivity(intent);
            }});
    }
    public void onClick(View v){
     String view = v.toString();
     if(view.equals(findViewById(R.id.up_button).toString()))
      command = "up";
     else if(view.equals(findViewById(R.id.left_button).toString()))
      command = "left";
     else if(view.equals(findViewById(R.id.center_button).toString()))
      command = "stop";
     else if(view.equals(findViewById(R.id.right_button).toString()))
      command = "right";
     else if(view.equals(findViewById(R.id.down_button).toString()))
      command = "down";
     sendMessage.start();
    }
    private Thread checkUpdate = new Thread() {
        public void run() {
            try {
                String line;
                Log.w("ChattingStart", "Start Thread");
                while (true) {
                    Log.w("Chatting is running", "chatting is running");
                    networkReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                    line = networkReader.readLine();
                    html = line;
                    mHandler.post(showUpdate);
                    networkReader.close();
                }
            } catch (Exception e) {
            }
        }
    };
    private Runnable showUpdate = new Runnable() {
        public void run() {
            Toast.makeText(Control.this, "Coming word: " + html,
                    Toast.LENGTH_SHORT).show();
        }
    };
    private Thread sendMessage = new Thread(){
     public void run(){
   try{
      while(true){
       networkWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
             PrintWriter out = new PrintWriter(networkWriter, true);
             out.println(command);
             out.flush();
             out.close();
             networkWriter.close();
      }
   }catch(Exception e){
    
   }
     }
    };
    public void setSocket(String ip, int port) throws IOException {
        try {
            socket = new Socket(ip, port);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

Java서버와 Android Client간의 지속적인 통신을 원하는데요

 

채팅과 같이 계속 서로 데이터를 전송하고자 하는데 자꾸 한번씩만 전송되고 그 이후에는 안되네요 ㅜㅜ

 

Buffer를 이용한 것들은 전송 후 close해 줘야 다음에 다시 전송할때 활성화 시킬 수 있다고 알고 있습니다.

 

PrintWriter도 동일하게 생각해 close()해주고 있구요.

 

송신, 수신 모두 Thread 내에서 While(true)를 이용해 무한 반복으로 적용 시켰는데

 

왜자꾸 전송이 안되는지 모르겠어요 ㅜㅜ 알려주세요 ㅜㅜ