Neokript
Messages postés18Date d'inscriptionjeudi 19 janvier 2006StatutMembreDernière intervention22 avril 2010
-
1 févr. 2009 à 12:30
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
1 févr. 2009 à 14:45
Bonjour a tous, j'ai réalisé une application client serveur et il me reste deux trois détails a régler et je n'y arrive pas c'est pour ce la que je fais appelle a vous.
- j'arrive a télécharger des fichiers, mais seulement des fichiers textes (les images, pdf, binaires font quitter le prog avec notification d'erreurs)
Cette fonction envoie le fichier (du cote envoie apparament ca marche, c'est la reception qui fait planter)
public void download(string file)
{
send(socket, "exit");
Thread.Sleep(100);
if (System.IO.File.Exists(file) == true)
{
System.IO.FileInfo infos_file = new System.IO.FileInfo(file);
long size = infos_file.Length;
send(socket, size.ToString());
Thread.Sleep(100);
StreamReader sr = new StreamReader(file);
char[] c = null;
while (sr.Peek() >= 0)
{
c = new char[1024];
sr.Read(c, 0, c.Length);
string buf = new string(c);
send(socket, buf);
Thread.Sleep(500);
list.Items.Add(buf);
}
sr.Close();
send(socket, "endoffile");
}
else
{
send(socket, "stop");
Thread.Sleep(100);
send(socket, "Le fichier demande n'existe pas !");
}
}
- mon second probleme est pour lister un arborescence distante, par exemple C:\, ca marche au niveau 1 et 2 et a partir du niveau 2 a chaque clique sur un noeud sa me remet les meme fichiers/repertoire et je ne vois pa l'erreur : Voila mes fonctions :
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 1 févr. 2009 à 13:21
Bonjour,
"avec notification d'erreurs"
Et quelle est l'erreur en question ?
Sinon à première vue dans le code de réception il y a traitement systématique des données via
texte = System.Text.Encoding.ASCII.GetString(buffers);
ce qui doit effectivement donner une restitution relativement bizarre pour des fichiers binaires.
Neokript
Messages postés18Date d'inscriptionjeudi 19 janvier 2006StatutMembreDernière intervention22 avril 2010 1 févr. 2009 à 13:46
Salut,
tu as raison, l'erreur viens bien de cette ligne : texte = System.Text.Encoding.ASCII.GetString(buffers); quand je la passe en commentaire le prog ne plante pas.
du coup, il ne faut pas que j'encode ce que je reçois, mais que j'envoie directement les bytes ?
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 1 févr. 2009 à 14:45
Heu non je n'ai pas tout compris sur ce coup là.
Juste une remarque : la ligne "texte.Replace("\0", "");" ne sert à rien vu que tu ne récupères pas son retour (le type String est immuable), et même sans celà j'ai du mal à voir quelle était l'intention.
Pour ton problème je pense que tu devrais remettre à plat ce que tu veux faire au lieu de tatonner dans le code, ça devrait te permettre de voir où tu as fait une erreur dans ton protocole de transfert d'informations.