Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Envoyer des objets perso c#  (Lu 2827 fois)

0 Membres et 1 Invité sur ce sujet

bobob

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
    • E-mail
Envoyer des objets perso c#
« le: Décembre 18, 2012, 05:24:55 pm »
Bonjour,

Je voudrais avoir un client en c# et un serveur en c++ utilisant le module réseau 1.6.
J'aimerais pouvoir échanger mes classes persos avec " sf::Packet" seulement le module n'est pas disponible en c#.

Y'a t'il un moyen simple pour échanger mes classes en utilisant cette librairie ?

Merci

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Envoyer des objets perso c#
« Réponse #1 le: Décembre 18, 2012, 07:13:07 pm »
Pas directement, non. Il va falloir faire un truc à ta propre sauce.
Laurent Gomila - SFML developer

bobob

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
    • E-mail
Re : Envoyer des objets perso c#
« Réponse #2 le: Décembre 19, 2012, 09:33:57 am »
Ma propre sauce .. Je t'avouerai que je ne m'y connais pas tellement et j'ai essayé d'utiliser "BinaryFormatter" en c# mais sans succès. Des idées ?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Envoyer des objets perso c#
« Réponse #3 le: Décembre 19, 2012, 10:22:53 am »
Qu'est-ce qui te pose problème en fait ? "Echanger des classes sur le réseau" c'est un peu vague, il faut déjà que tu aies une idée de ce que tu veux faire (techniquement parlant) exactement.
Laurent Gomila - SFML developer

bobob

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
    • E-mail
Re : Envoyer des objets perso c#
« Réponse #4 le: Décembre 19, 2012, 10:27:54 am »
Ce qui me pose problème, c'est comment vais-je envoyer des objets d'un client c# à un serveur c++ qui utilise la lib reseau SFML ? Ce que je veux faire en gros c'est avoir une classe contenant une string et un int (par exemple), et pouvoir l'envoyer à mon serveur.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Envoyer des objets perso c#
« Réponse #5 le: Décembre 19, 2012, 10:36:58 am »
Il faut le faire en deux temps :
1) sérialiser les objets (les transformer en séquence d'octets)
2) envoyer les octets via la socket

L'étape 2 ne devrait pas poser de problème.

Quant à l'étape 1, il te faut définir un protocole et le respecter scrupuleusement des deux côtés. Par exemple, vas-tu encoder une chaîne avec sa taille, ou bien simplement ajouter un 0 terminal ? Vas-tu encoder en big endian ou en little endian (normalement il faut utiliser le "network byte order") ? Si tu utilises TCP, il faut aussi prévoir de borner explicitement les messages, car le protocole TCP peut séparer ou combiner à sa guise ce que tu envoies. Attention aussi à n'utiliser que des types à taille fixe pour éviter des différences entre les deux machines qui communiquent.

Une fois ton protocole défini, il te suffit d'utiliser la méthode qui va bien pour transformer des variables en suites d'octets bruts. Je ne sais pas comment ça se passe en C# mais tu devrais trouver suffisamment de doc sur le sujet.
Laurent Gomila - SFML developer