2010-10-01 4 views
0

Je suis en train de porter une application sur laquelle je travaille déjà sous Windows pour Android. Le problème est le même, le serveur est continuellement en train de trier les paquets de données et le client les lit.Diffusion TCP/IP dans l'application Android

Le problème que j'ai est que, bien que l'application originale fonctionne très bien, l'application Android se connecte bien, mais perd beaucoup de paquets - Y at-il quelque chose que je peux simplement changer pour résoudre ce problème?

C'est le point crucial du code (juste v lire simplement les octets du flux):

privé InputStream m_RDSInputStream;

...

for (int lBytesToRead = 0; lBytesToRead < (lNetworkCarrierSize + lBytesSentFromServer);> lBytesToRead ++) { int lDataByte = m_RDSInputStream.read(); m_RDSInputDataBuffer [lBytesToRead] = (octet) lDataByte;

}

J'ai essayé la lecture x octets en un seul coup - mais le vent avec le même problème. Je sais que le serveur et le lien ne sont pas les problèmes

Merci pour tout conseiller

Mark

Répondre

1

Je ne sais pas ce qui ne va pas. Cela fonctionne parfaitement pour moi.
Ce que je fais, est d'envoyer la taille d'un paquet que les 4 premiers octets du paquet.
Ensuite, j'ai lu le paquet en une seule fois:

InputStream isr = sock.getInputStream(); 
byte plength[] = new byte[4]; 

while(1) 
{ 
    isr.read(plength, 0, plength.length); 
    int packet_size = (int)unsignedIntToLong(plength); 
    int bytes_read = isr.read(buf, 0, packet_size); 
} 
Questions connexes