음 얼마전부터 공유기 내부 네트워크에서 socket네트워크를 하고있는데 

공유기내부 ip번호로 socket를 보내도 전혀 응답이없네요;;;

에뮬레이터는 현재 PC가 가지고있는 공유기 ip로 보내니 받아지는데 

폰에서 넣어서 하니까 전혀 연결이 않되네요 ;;;

퍼미션도 주고 스레드도하고 커넥션도 줬는데;;; 

그런데 ping Test를 하니까  ICMP는 pingTest 가 되지않고  ARP로는 테스트가 동작을 하더군요 ;;; 

동작형태는 

        서버 -----------------------공유기---------------안드로이드(클라이언트)

[192.168.0.4]          ←                 [192.168.0.1]      ←               [192.168.0.2]     

1.서버측에서 Socket.accept(); 말고도 다른 연결 대기동작이있나요? 

2.클라이언트측에서 socket생성시에 C class대역에 맞는 socket새성이 있나요??

3.ARP방식으로 동작하게 하는방법은 없나요 ?

4. 위에 다 아니라면 어떤게 문제일까요 ㅜㅡㅜ  마켓에 어플은 잘만되드만 ㅜㅡㅜ


socketing방식은 일반적인 serverSocket과 socket방식으로

서버는 무한루프네에서 연결대기하는 상태이고 

클라이언트는 스레드를 통해서 연결합니다. 스레드에 들어오면 커넥션을 주는 방식입니다. 


-서버

 
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 = 9999; // ex: 5555
 public static final String ServerIP = "192.168.0.3"; // 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 server = serverSocket.accept();
    System.out.println("S: Receiving...");
    try {
     BufferedReader in = new BufferedReader(new InputStreamReader(server.getInputStream()));
     String str = in.readLine();
     System.out.println("S: Received: '" + str + "'");
     PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(server.getOutputStream())),true);
     out.println("Server Received "+ str);
     
    } catch(Exception e) {
     System.out.println("S: Error");
     e.printStackTrace();
    } finally {
    server.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 android.socketTest;
import android.app.Activity;
import android.os.Bundle;
//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;
public class TCPclienttest extends Activity {
    /** Called when the activity is first created. */
 public String return_msg;
    @Override
    public void onCreate(Bundle savedlnstanceState) {
        super.onCreate(savedlnstanceState);
        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().equalsIgnoreCase("")){
           
           
           //Thread cThread = new Thread(new TCPclient(et.getText().toString()));
           TCPclient tp = new TCPclient (et.getText().toString(),return_msg);
           tp.run();
           //cThread.start();
           Toast t=Toast.makeText(getApplicationContext(), return_msg, Toast.LENGTH_LONG);
           t.show();
           tv.setText(return_msg);
          }
          }});
        }
       }
     
     

-클라이언트-socket 스레드입니다.

 package android.socketTest;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.*;
import android.util.Log;
public class TCPclient implements Runnable {
 //  private static final String serverIP = "164.125.240.158";  // ex: 192.168.0.100
 // private static final int serverPort = 9999; // ex: 5555
   private String msg;
   private String return_msg; 
   //private String return_msg;
   
   public TCPclient(String _msg, String rmsg){
    this.msg = _msg;
    this.return_msg=rmsg;
   }
  // @Override
   public void run() {
    // TODO Auto-generated method stub
    try {
       
       SocketAddress serverAddr = new InetSocketAddress("192.168.0.3",9999);
       
       Socket socket = new Socket("192.168.0.1");
       Log.d("TCP", "C: Connecting...");
       socket.connect(serverAddr,5000);
      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(UnknownHostException e){Log.e("TCP", "IPAddr Error&port");}
      catch (Exception e) {
         Log.e("TCP", "C: Error2", e);
       }
   }}