J'écris un jeu multijoueur pour téléphones Android. La communication est via Bluetooth. J'ai réussi à envoyer des octets d'un téléphone à l'autre à l'aide du flux d'entrée / sortie. Depuis que je dois pouvoir transférer des objets, je veux des objectifs. Cependant, lorsque j'essaie de créer un objet dans mes flux, mon programme est suspendu à l'instruction.
} catch (Exception e) { Log.e(TAG,"Error"); Log.d(TAG,e.getMessage()); e.printStackTrace(); } Log.d(TAG,"attempting to create OOS"); try { oos = new ObjectOutputStream(mmOutStream); } catch (IOException e) { Log.e(TAG,"IO exception for Output Stream, I have no idea what caused this"); Log.d(TAG,e.getMessage()); } } public void run() {.....}
3 Réponses :
D'accord, je pense savoir ce que j'ai mal fait. Les flux d'objets sont plus compliqués, il semble que le constructeur ObjectInPhatStream ait besoin de données pour fonctionner avant de créer le flux. J'ai résolu ce problème par
C'est ce que j'utilise maintenant (notez que j'ai également ajouté un tampon): p>
Ceci est tout non-sens. StreamCorrressionException n'est pas lancé lors de la création d'un objetOutPutStream. Tout ce que vous avez à faire est de créer d'abord l'objetOutputStream aux deux extrémités.
Je fais d'abord la création d'ObjectOutputStream, puis créant ainsi les intrigions. Et aussi rincer des sorties après avoir écrit. Je reçois toujours le problème "Hang".
Il suffit de construire le ObjectOutputStream, CODE> et
Flush () CODE> IT, aux deux extrémités avant em> construire le
ObjectInputStream. Code> Vous n'êtes pas obligé d'écrire des données de votre choix. P>
Pouvez-vous donner un exemple en code? J'ai le même problème et je ne comprends pas bien votre solution ...
Pouvez-vous s'il vous plaît élaborer un peu. Je n'ai pas eu votre solution.
@Kake voir Modifier. Je ne vois pas comment ça peut être plus clair que ça.
comme EJP suggéré ...
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream()); oos.flush(); ObjectInputStream is = new ObjectInputStream(socket.getInputStream());