2013-02-04 4 views
1

Je me demandais si quelqu'un serait en mesure de m'aider avec un petit problème que j'ai.XML sur TCP socket

Je recevrai un fichier XML qui sera envoyé via une socket tcp. J'essaye de créer une petite application qui peut agir en tant que serveur et envoyer un dossier de xml par une prise de tcp. Je peux alors commencer à tester mon application initiale qui recevra et traitera ce document xml.

J'ai essayé Google et je continue de tomber dans des impasses sur celui-ci.

+4

Qu'avez-vous essayé, et où êtes-vous resté bloqué? "Socket" et "TcpClient" peuvent être des démarreurs utiles ici. Il n'y a rien de spécial à propos de XML lors de l'envoi via TCP. –

+0

J'ai envoyé avec succès des chaînes sur une connexion tcp, Serait la même chose pour envoyer les données XML. Juste paquet le document XML dans une chaîne et l'envoyer sur TCP? Comment le nom de fichier du document XML serait-il transmis? Lorsque le système est en ligne, je reçois plusieurs documents XML à des moments aléatoires. Merci Stu – user2040454

Répondre

2

Une solution possible consiste à charger le fichier xml sous la forme d'une série de chaînes ou sous la forme d'un tableau d'octets et à l'envoyer. L'approche de tableau d'octets pourrait être la plus concise, en utilisant le network library networkcomms.net l'application appelant l'envoi ressemblerait à quelque chose comme ceci:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

using NetworkCommsDotNet; 

namespace Client 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      byte[] bytesToSend = File.ReadAllBytes("filename.xml"); 
      TCPConnection.GetConnection(new ConnectionInfo("127.0.0.1", 10000)).SendObject("XMLData", bytesToSend); 

      Console.WriteLine("Press any key to exit client."); 
      Console.ReadKey(true); 
      NetworkComms.Shutdown(); 
     } 
    } 
} 

et le serveur:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

using NetworkCommsDotNet; 

namespace Server 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      NetworkComms.AppendGlobalIncomingPacketHandler<byte[]>("XMLData", (packetHeader, connection, incomingXMLData) => 
      { 
        Console.WriteLine("Received XMLData"); 
        File.WriteAllBytes("filename.xml", incomingXMLData); 
      }); 

      TCPConnection.StartListening(true); 

      Console.WriteLine("Server ready. Press any key to shutdown server."); 
      Console.ReadKey(true); 
      NetworkComms.Shutdown(); 
     } 
    } 
} 

Vous aurez évidemment besoin de télécharger le NetworkCommsDotNet DLL du site Web afin que vous puissiez l'ajouter dans la référence 'using NetworkCommsDotNet'. Voir aussi l'adresse IP du serveur dans l'exemple du client est actuellement "127.0.0.1", cela devrait fonctionner si vous exécutez à la fois le serveur et le client sur la même machine. Pour plus d'informations, consultez également les articles getting started ou how to create a client server application.