Ceci est ma première application sur android et j'essaye d'écrire un client TCP. Jusqu'à présent, j'ai un serveur TCP python et je l'ai testé avec un client python TCP et ça marche très bien.Le programme se bloque lors de l'envoi du paquet TCP
J'ai pris l'exemple de client TCP de here. Lorsque je démarre l'application, je peux voir sur handshark la prise de contact afin que la connexion soit établie.
Maintenant, le problème est avec l'envoi de message. quand je mets la fonction appel
if (mTcpClient != null)
{
mTcpClient.sendMessage("testing");
}
dans l'activité principale:
public void ChangeButtonState(View view)
{
boolean state = ((ToggleButton) view).isChecked();
if (state)
{
if (mTcpClient != null) {
mTcpClient.sendMessage("testing");
}
textView.setText("button is on. sent Tcp message. ");
textView.setVisibility(View.VISIBLE);
} else {
textView.setText("button is off");
}
}
Le code tombe en panne sur la ligne mBufferOut.println(message);
en classe TcpClient.
Mais si j'appelle cette fonction juste après la ligne mBufferOut = new PrintWriter(socket.getOutputStream());
dans la classe TcpClient, le client transmet le message, le serveur le reçoit et le renvoie au client.
Donc, ma question est pourquoi le code plante-t-il? le membre mTcpClient
n'est pas nul.
Exécutez-vous ce code à partir du thread principal? S'il vous plaît partager trace de la pile –