2011-10-21 3 views
2

J'essaie d'envoyer des informations à un serveur avec Android en utilisant Monodroid.Utilisation de sockets pour transférer des données avec MonoDroid

Le code est le suivant:

public void sendSomething() 
    { 
     sock = new TcpClient(); 
     sock.Connect(Dns.GetHostAddresses("a.domain.com"), 7777); 

     String d; 
     d = "somedata"; 

     StreamWriter w = new StreamWriter(sock.GetStream()); 
     // StreamReader r = new StreamReader(sock.GetStream()); 

     w.WriteLine(d); 
     w.Flush(); 

     sock.Close(); 
    } 

Il fonctionne très bien si je lance la même routine exacte dans une application WinForms, mais lorsqu'elle est liée à un bouton clic dans MonoDroid (en cours d'exécution sur le périphérique virtuel Android - I J'utilise la version d'évaluation) le serveur verra la connexion mais aucune donnée n'est reçue.

Quelqu'un a-t-il une idée de ce que cela pourrait être?

(Edited au code ammend)

+0

Les autres applications client fonctionnent-elles à partir du périphérique virtuel. Par exemple. Pouvez-vous accéder à une page Web de base du navigateur? Recevoir un email etc. –

+0

Salut, oui je peux accéder aux pages Web avec le navigateur intégré de l'appareil – Pleng

Répondre

1

Il pourrait y avoir un problème de serveur. Par exemple. supposons que:

a) votre application winform fonctionnant sous Windows/MS.NET (et non sur Mono/Linux ou OSX);

b) votre serveur est basé sur Windows aussi, et fait un ReadLine à lire les prises

Puis le NewLine entre l'écriture (Unix \n) et la lecture (Windows \r\n\) pourrait expliquer pourquoi le serveur ne signale pas ce qui est être lu. Pouvez-vous nous montrer comment vous lisez les données sur le serveur?

(éditez votre question)

+0

Merci cela résolu le problème! I Changé: d = "somedata"; à d = "somedata \ r \ n"; et il fonctionne maintenant ma journée de maux de tête commence à effacer! :) – Pleng

+0

Heureux qu'il l'ait fait :-) Vous pouvez également définir la propriété 'NewLine' (que' StreamWriter' obtient de 'TextWriter') pour correspondre aux nouvelles lignes de Windows (ou changer' StreamReader' dans votre application serveur). Tant que les deux sont identiques, ça devrait aller. – poupou

Questions connexes