2015-01-15 1 views
1

Я использую asynctask для установления соединения между клиентом (runnning на моем устройстве Android) и сервером (работает на моем компьютере). Когда я запускаю приложение, я должен щелкнуть по кнопке, чтобы подключить их, и моя компьютерная компьютерная программа должна показать мне консольное устройство, если клиент подключен, но не отображается; мой клиент android не подключается к моему серверу pc.Клиентский сервер pc-сервера android socket с использованием asynctask

Android-клиент:

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 сервер:

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(); 

    } 
} 

}

В моей AndroidManifest.xml я только добавил

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

Если я запустить клиент от ПК на моем сервере консоль я вижу подключенное устройство, но на андроиде не работает.

Благодаря

+0

Убедитесь, что у вас есть правильный IP-адрес вашего сервера и что вы отключили брандмауэр на своем ПК (иногда он запрещает подключения) –

ответ

0

Это, скорее всего, внутрибрюшинно в андроиде стороны неправильно. используйте частный ip, например: 192.168.1.x. Эти типы ip требуют, чтобы вы были в одной сети. Я думаю, что вы пытаетесь сделать доступ к серверу за пределами сети, и для этого требуется порт fkrwarding.