BinaryFormatter windows phone 6.

cs_yadzamalo Messages postés 8 Date d'inscription mardi 11 janvier 2011 Statut Membre Dernière intervention 21 avril 2012 - 17 févr. 2012 à 22:50
NHenry Messages postés 15140 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 30 juin 2024 - 18 févr. 2012 à 15:32
bonsoir à tous, voilà mon probleme je souhaite créer une application console qui servira de client et de serveur avec tcpclient et tcplistener sur mon ordinateur (comme serveur) et sur mon pocket pc (windows phone 6. comme Client), j'ai deja créer une application similaire avec une connexion entre deux pc, de plus pour echanger des données j'utilisais la fonction binaryformatter pour serializer mes données, et networkstream biensur. Ca marchait trés bien entre mes deux ordi. mais voila le code sur mon pocket pc ne prend pas en charge binaryformatter, je voudrai bien savoir pourquoi et par la meme occasion vous demandez si vous connaissez une autre alternative pour echanger des données.
PS: j'ai essayé les sockets avec les fonctions Send() et receive() mais elle ne me conviennent pas (je les utilise mal peut etre!) mais dans tous les cas mes données echangé via ces fonction ne sont pas totalement correcte sur affichage console.

Pourriez vous m'éclairer sur ce sujet? Merci d'avance.
Thomas.

4 réponses

NHenry Messages postés 15140 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 30 juin 2024 159
18 févr. 2012 à 00:06
Bonjour,

Tu peux faire ton propre système de sérialisation, c'est pas toujours évident, mais cela peut être faisable.

Sinon, comment utilises-tu les fonction Send et Receive ?
Et quels erreurs/comportement tu as ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
cs_yadzamalo Messages postés 8 Date d'inscription mardi 11 janvier 2011 Statut Membre Dernière intervention 21 avril 2012
18 févr. 2012 à 11:10
bonjours, j'utilise les fonction Send() et receive() trés basiquement :
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.IO;
using System.Windows.Forms;


namespace SmartDeviceProject30
{
class Program
{
static void Main(string[] args)
{
string hj = Dns.GetHostName();
if (hj == "xyrr147nz")
{
Socket fb = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
fb.Bind(new IPEndPoint(IPAddress.Parse("192.168.1.171"), 4662));
fb.Listen(1);
Console.WriteLine("En attente du client ...");
Socket u = fb.Accept();
Console.WriteLine("Client accepté!");
Console.WriteLine("Les differents dossiers et fichiers racine :");
byte[] ndy = new byte[50];
u.Receive(ndy);
int yubn = BitConverter.ToInt32(ndy, 0);
for (int j = 0; j < yubn; j++)
{
byte[] nn = new byte[50];
u.Receive(nn);
string uup = Encoding.ASCII.GetString(nn, 0, nn.Length);
Console.WriteLine(uup);
}
byte[] o3 = new byte[50];
u.Receive(o3);
int yuc1 = BitConverter.ToInt32(o3, 0);
for (int f = 0; f < yuc1; f++)
{
byte[] ksr = new byte[50];
u.Receive(ksr);
string hjj = Encoding.ASCII.GetString(ksr, 0, ksr.Length);
Console.WriteLine(hjj);
}
Console.WriteLine("Voulez vous accedés à d'autre fichiers et dossiers (a) :\n");
string hjv = Console.ReadLine();
byte[] oop = Encoding.ASCII.GetBytes(hjv);
u.Send(oop);
switch (hjv)
{
case "a":
Console.WriteLine("Entrez le chemin d'accés :");
string hut = Console.ReadLine();
byte[] paz = Encoding.ASCII.GetBytes(hut);
u.Send(paz);
byte[] odkd = new byte[50];
u.Receive(odkd);
int dds = BitConverter.ToInt32(odkd, 0);
for (int d = 0; d < dds; d++)
{
byte[] mdkd = new byte[50];
u.Receive(mdkd);
string fkx = Encoding.ASCII.GetString(mdkd, 0, mdkd.Length);
Console.WriteLine(fkx);
}
break;
}

}
else
{
Socket gg = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
gg.Connect(new IPEndPoint(IPAddress.Parse("0.0.0.0"), 4662));
string[] mm = Directory.GetDirectories("\");
int gv = mm.Length;
byte[] nee = BitConverter.GetBytes(gv);
gg.Send(nee);
for (int i = 0; i < mm.Length; i++)
{
byte[] ksd = Encoding.ASCII.GetBytes(mm[i] + "\n");
gg.Send(ksd);
}
string[] dm = Directory.GetFiles("\");
int kff = dm.Length;
byte[] ppllm = BitConverter.GetBytes(kff);
gg.Send(ppllm);
for (int g = 0; g < dm.Length; g++)
{
byte[] of = Encoding.ASCII.GetBytes(dm[g] + "\n");
gg.Send(of);
}
byte[] kaz = new byte[50];
gg.Receive(kaz);
string fnd = Encoding.ASCII.GetString(kaz, 0, kaz.Length);
switch (fnd)
{
case "a":
byte[] opgf = new byte[50];
gg.Receive(opgf);
string dccd = Encoding.ASCII.GetString(opgf, 0, opgf.Length);
string[] ofd = Directory.GetDirectories("\" + dccd);
int dbs = ofd.Length;
byte[] oddc = BitConverter.GetBytes(dbs);
gg.Send(oddc);
for (int fg = 0; fg < dbs; fg++)
{
byte[] kfxs7 = Encoding.ASCII.GetBytes(ofd[fg] + "\n");
gg.Send(kfxs7);
}
break;
}

}
}
}
}
le comportement de mon programme disfonctionne sur le mode d'affichage, mes boucle for() nottemment.
Sinon peut tu me dire comment utiliser la serialization, je suis plus abituer à utiliser binaryformatter et tcpclient, tcplistener.
Merci.
cs_yadzamalo Messages postés 8 Date d'inscription mardi 11 janvier 2011 Statut Membre Dernière intervention 21 avril 2012
18 févr. 2012 à 11:11
je suis desolé pour l'affichage du message, je pensais que ca serait plus clair mais il a pas pris en compte les espaces.
NHenry Messages postés 15140 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 30 juin 2024 159
18 févr. 2012 à 15:32
Bonjour,

Postes le code en respectant le point 2 de ma signature, ce sera plus lisible.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Rejoignez-nous