2015-01-15 6 views
1

클라이언트 (내 안드로이드 장치에서 실행)와 서버 (내 PC에서 실행 중) 사이를 연결하려면 asynctask를 사용하고 있습니다. 내가 응용 프로그램을 실행하면 버튼을 클릭하여 연결해야하며, 클라이언트가 연결되어 있지만 나타나지 않으면 내 서버 PC 프로그램이 콘솔 장치에 나를 표시해야합니다. 내 안드로이드 클라이언트가 내 PC 서버에 연결하지 않습니다.asynctask를 사용하는 안드로이드 소켓 클라이언트 PC 서버

안드로이드 클라이언트 :

public class MainActivity extends ActionBarActivity { 

    Button send; 
    EditText txt; 
    TextView testo; 
    String response = ""; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     send = (Button) findViewById(R.id.send); 
     //txt = (EditText) findViewById(R.id.editText); 
     testo = (TextView) findViewById(R.id.textView1); 
    } 


    class AddStringTask extends AsyncTask<Void, String, Void> { 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 

     } 

     @Override 
     protected Void doInBackground(Void... unused) { 

      try { 
       Socket socketClient = new Socket("10.10.0.151",4321); //ipaddress of my pc server 
      } catch (UnknownHostException e) { 
       e.printStackTrace(); 
       response = e.toString(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
       response = e.toString(); 
      } 
      testo.setText(response); 
      return (null); 
     } 

     @SuppressWarnings("unchecked") 
     @Override 
     protected void onProgressUpdate(String... item) { 

     } 

     @Override 
     protected void onPostExecute(Void unused) { 
      testo.setText(response); 
     } 
    } 

    public void buttonClick(View v){ 
     new AddStringTask().execute(); 
    } 
} 

PC 서버 : 내가 클라이언트를 실행하면 난 그냥

<uses-permission android:name="android.permission.INTERNET"/> 

을 추가 한 제의 AndroidManifest.xml에서

public class Server { 

public static Socket connection; 

public static void main(String[] args) throws IOException { 

    System.out.println("Starting server on port number: 4321..."); 
    ServerSocket server = new ServerSocket(4321); 

    while(true){ 
     System.out.println("Waiting for clients..."); 
     connection = server.accept(); 
     System.out.println("Connected to: "+connection.getInetAddress().getHostAddress()); 
     connection.close(); 

    } 
} 

}

내 서버의 PC에서 콘솔 연결 장치를 볼 수 있지만 안드로이드 작동하지 않습니다 .. 왜?

감사합니다.

+0

서버의 IP가 올바른지, PC의 방화벽을 해제했는지 확인하십시오 (연결을 허용하지 않는 경우도 있음) –

답변

0

안드로이드 측의 IP가 잘못되었을 가능성이 큽니다. 개인 IP 예 : 192.168.1.x를 사용하십시오. ip 유형은 동일한 네트워크에 있어야합니다. 내 생각에 당신이하려는 것은 네트워크 바깥에서 서버에 액세스하는 것이며 포트 fkrwarding이 필요합니다.

관련 문제