현재 서버를 구현해서 노틉ㄱ에서 서버를 가동하고 갤S 단말기에서 메세지 전송을 하는데
현재 같은 와이파이를 잡을때는 메세지가 잘 전송이 되지만 다른 와이파이(즉 노트북과 단말기가 서로 다른 와이파이를 잡았을때)는 메세지가 전송이 안되서 이렇게 여쭤볼라고 올립니다.

서버 소스

package TCPtest;

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

public class TCPserver implements Runnable { 
 public static final int ServerPort = 9998; // ex: 5555
 public static final String ServerIP = "192.168.0.62"; // ex: 192.168.0.100
 
  @Override
 public void run() {
  // TODO Auto-generated method stub
  try{
   System.out.println("S: Connecting...");
   ServerSocket serverSocket = new ServerSocket(ServerPort);

   while (true) {
    Socket client = serverSocket.accept();
    System.out.println("S: Receiving...");

    try {
     BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
     String str = in.readLine();
     System.out.println("S: Received: '" + str + "'");
     PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(client.getOutputStream())),true);
     out.println("Server Received "+ str);
    
    } catch(Exception e) {
     System.out.println("S: Error");
     e.printStackTrace();
    } finally {
     client.close();
     System.out.println("S: Done.");
    
    }
   }
  } catch (Exception e) {
   System.out.println("S: Error");
   e.printStackTrace();
  }
 }

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Thread desktopServerThread = new Thread(new TCPserver());
  desktopServerThread.start();
 }
}



클라이언트 소스

package com.mnk.TCPsocketTest;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import android.app.Activity;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.NetworkInfo.State;
import android.net.wifi.WifiManager;

 


public class TCPsocketTest 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);
   
    final EditText et = (EditText)findViewById(R.id.EditText01);
    Button btn = (Button)findViewById(R.id.Button01);
    final TextView tv = (TextView)findViewById(R.id.TextView01);
   
   
    btn.setOnClickListener(new OnClickListener(){
     public void onClick(View v){
       if(et.getText().toString() != null || !et.getText().toString().equals("")){
       TCPclient tp = new TCPclient(et.getText().toString());
       tp.run();
      
       Toast t = Toast.makeText(getApplicationContext(), return_msg, Toast.LENGTH_LONG);
       t.show();
       tv.setText(return_msg);
       }
     }
    });
  }
 
  private class TCPclient implements Runnable {
  private static final String serverIP = "192.168.0.62";  // ex: 192.168.0.100
  private static final int serverPort = 9998; // ex: 5555
  private String msg;
  //private String return_msg;
 
  public TCPclient(String _msg){
   this.msg = _msg;
  }
  @Override
  public void run() {
   // TODO Auto-generated method stub
   try {
     
      InetAddress serverAddr = InetAddress.getByName(serverIP);
     
      Log.d("TCP", "C: Connecting...");
     
      Socket socket = new Socket(serverAddr, serverPort);
     
      try {
       Log.d("TCP", "C: Sending: '" + msg + "'");
       PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
      
       out.println(msg);
       Log.d("TCP", "C: Sent.");
          Log.d("TCP", "C: Done.");
         
          BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
          return_msg = in.readLine();
         
          Log.d("TCP", "C: Server send to me this message -->" + return_msg);
         } catch(Exception e) {
           Log.e("TCP", "C: Error1", e);
      } finally {
       socket.close();
      }
      } catch (Exception e) {
        Log.e("TCP", "C: Error2", e);
      }
  }
 
  }
}


저렇게 소켓으로 구현을 하는 목적은 실시간 전략게임을 만들어야되기 때문에 동기화도 시켜야 되고 메세지가 실시간으로 전송을 하기 위해서 소켓으루 구현을 하려고 합니다.

질문 1 : 다른 와이파이에서 메세지를 전송을 하려면 어떤 부분을 고쳐야 되는지? 아니면 어떤 부분을 추가를 해야 하는지 궁금합니다.
질문 2 : 서버를 구현해서 메세지를 받을때 단말기 3g를 어떤게 구현을 해야 서버로 메세지를 보낼수 있는지 궁금합니다.

한 2주간 책찾아보고 뒤져봐도 어떻게 하는지 잘 몰라서 이렇게 여쭤봅니다.^^