Comment démarrer le client et se connecter au serveur dans AsyncTask?

Je cours sur l’ordinateur via le serveur en ligne de commande avec le port 6666. Dites-moi comment puis-je me connecter en cliquant sur le bouton dans l’émulateur? Je apparais dans les goélands larges “Connecting …” puis une erreur: W / System.err: java.net.ConnectException: Connection refused . Dans le même temps, lorsque je lance le serveur et que le client ne sépare que des fichiers, tout fonctionne, peu importe la ligne de commande ou le studio Android. Qu’est-ce que je fais mal? Voici MainActivity:

 import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ Button but; MyTask mt; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); but = (Button) findViewById(R.id.btnOk); but.setOnClickListener(this); } public void onClick(View v) { mt = new MyTask(); mt.execute(); } class MyTask extends AsyncTask { int port = 6666; @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected Void doInBackground(Void... params) { int serverPort = 6666; Ssortingng address = "127.0.0.1"; try { InetAddress ipAddress = InetAddress.getByName(address); System.out.println("Connecting..."); Socket socket = new Socket(ipAddress, serverPort); System.out.println("Connected"); } catch (Exception x) { x.printStackTrace(); } return null; } @Override protected void onPostExecute(Void result) { super.onPostExecute(result); } } } 

Je reçois l’erreur suivante:

 java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:334) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:196) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356) at java.net.Socket.connect(Socket.java:605) at java.net.Socket.connect(Socket.java:554) at java.net.Socket.(Socket.java:431) at java.net.Socket.(Socket.java:241) at com.tenday.myapplication.MainActivity$MyTask.doInBackground(MainActivity.java:56) at com.tenday.myapplication.MainActivity$MyTask.doInBackground(MainActivity.java:41) at android.os.AsyncTask$2.call(AsyncTask.java:305) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761) 

Si vous utilisez l’émulateur, l’adresse IP que vous utilisez est probablement incorrecte. Vous devriez utiliser 10.0.0.2. voir les documents Android

changer l’adresse IP à laquelle vous vous connectez

 Ssortingng address = "127.0.0.1"; 

utilisez l’adresse IP de la machine qui exécute le serveur, car 127.0.0.1 le mobile et non l’ordinateur qui héberge l’émulateur.

vous devriez utiliser quelque chose comme

 Ssortingng address = "192.168.100.10"; 

ou quelle que soit l’adresse IP de l’ordinateur