cs_yadzamalo
Messages postés8Date d'inscriptionmardi 11 janvier 2011StatutMembreDernière intervention21 avril 2012
-
17 févr. 2012 à 22:50
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 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.
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 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és8Date d'inscriptionmardi 11 janvier 2011StatutMembreDernière intervention21 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.
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 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