BinaryFormatter windows phone 6.

Signaler
Messages postés
8
Date d'inscription
mardi 11 janvier 2011
Statut
Membre
Dernière intervention
21 avril 2012
-
Messages postés
14774
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
7 mars 2021
-
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

Messages postés
14774
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
7 mars 2021
151
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
Messages postés
8
Date d'inscription
mardi 11 janvier 2011
Statut
Membre
Dernière intervention
21 avril 2012

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.
Messages postés
8
Date d'inscription
mardi 11 janvier 2011
Statut
Membre
Dernière intervention
21 avril 2012

je suis desolé pour l'affichage du message, je pensais que ca serait plus clair mais il a pas pris en compte les espaces.
Messages postés
14774
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
7 mars 2021
151
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