Impossible de se connecter via la connexion TCP à Android

Je suis actuellement en train de créer une application Android qui doit se connecter via TCP / IP à un PC Windows, où Windows PC est le serveur et Android est un client . Le problème est quelque part dans la connexion! Chaque fois que j’essaie de démarrer la connexion, il continue d’ attendre le client et lorsque le bouton de connexion est cliqué dans le client, rien ne se passe vraiment!

Le code côté serveur que je travaille est:

TcpListener listner = new TcpListener(IPAddress.Any, 8126); NetworkStream netstream; TcpClient client; byte[] datalength = new byte[4]; public void btnstart_Click(object sender, EventArgs e) { Thread startconnection = new Thread(new ThreadStart(connect)); startconnection.Start(); } public void connect() { try { listner.Start(); //Starts Listening to any IP with port 8126 //Invoked Just because of CrossThreading Error Invoke(new MethodInvoker(delegate { this.lbl_status.Text = "Status : Waiting for Client"; })); //Invoke Complete. listner.Server.Listen(1); client = listner.AcceptTcpClient(); if (client.Connected) { Invoke(new MethodInvoker(delegate { this.lbl_status.Text = "Status : Connected Successfully"; })); //serverReceive(); } } catch (Exception ex) { //lbl_status.Text = "Status : " + ex.Message; MessageBox.Show(ex.Message); } } 

Et le code côté client comme,

  TcpClient tcpclient; protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.Main); Button btnConnectClick = FindViewById

Je ne sais pas où est le problème exact!

J’ai testé votre code avec l’application WPF en tant que serveur sur le site PC et l’application Xamarin.Android en tant que client sur le périphérique réel.

Fonctionne bien à mes côtés. Le seul problème que j’ai trouvé avec votre code est que du côté client, vous n’avez pas initialisé le tcpclient , le tcpclient est nul lorsque vous tcpclient.Connect(ip, 8126); (mais il ne jette pas une exception), j’ai simplement modifié votre code comme ceci:

 IPAddress ip = IPAddress.Parse("..."); //Ip from textbox tcpclient = new TcpClient(); tcpclient.ConnectAsync(ip, 8126); 

Vous pouvez essayer, si cela ne fonctionne toujours pas, assurez-vous que vos appareils sont sur le même réseau.

Savez-vous ce que Resource.Id.ipadd.ToSsortingng() renvoie? C’est un nombre comme 2130968576. Votre méthode OnCreate doit être

 EditText ipadd; protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.Main); Button btnConnectClick = FindViewById 

puis utiliser

 IPAddress ip = IPAddress.Parse(ipadd.Text); 

il retournera l’adresse IP.

J’ai eu la réponse ici, le code que j’exécutais était correct et la connexion TCP était établie avec succès tout le temps, mais le problème était avec cela,

if (client.Connected) { Invoke(new MethodInvoker(delegate { this.lbl_status.Text = "Status : Connected Successfully"; })); }

Chaque fois qu’il connectait le Client.Connected retourné False Je ne sais pas pourquoi. Existe-t-il un autre moyen de vérifier si le client est connecté ou non?