2010-11-02 18 views
2

J'essaie d'obtenir une application Android pour envoyer des données TCP à un serveur de mon réseau. Le serveur a été écrit en C#.Impossible d'envoyer des données via TCP depuis le socket java vers le serveur .net tcp

Lorsque j'utilise le code ci-dessous pour transmettre des données, le serveur ne reçoit qu'une série complète de \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0.

Est-ce que quelqu'un sait pourquoi?

Socket socket = new Socket(host, port); 
PrintWriter pw = new PrintWriter(socket.getOutputStream(), true); 
pw.print("test"); 
socket.close(); 
+1

Une pensée est de vérifier si le codage de ce qui est envoyé correspond à ce que le serveur attend. – fhj

Répondre

2

Je ne suis pas sûr que cela n'a rien à voir avec elle, mais vous pourriez vouloir essayer manuellement le rinçage PrintWriter. Vous avez passé true à son constructeur pour demander l'autoflushing, mais je crois que cela se produit uniquement lorsque vous imprimez un caractère de retour à la ligne, ce que votre code d'exemple ne fait pas.

+0

ne devrait pas fermer le «fermer» avant de fermer? – st0le

+0

Oui, mais cela ne fera que vider les tampons du socket. La classe 'PrintWriter' conserve ses propres tampons qui doivent être vidés avant la fermeture du socket pour s'assurer que toutes les données sont correctement distribuées. – bcat

0

vous pouvez essayer println ("test"). En Java, vous devez vider la ligne, ce qui peut être la cause de vos problèmes.

1

Fermez le PrintWriter, pas le socket.