2013-02-04 97 views
1

我想知道是否有人能够帮我解决我遇到的一个小问题。通过TCP套接字的XML

我将收到一个将通过tcp套接字发送的xml文件。我正在尝试创建一个可以充当服务器并通过tcp套接字发送xml文件的小应用程序。然后我可以开始测试我的初始应用程序,它将接收并处理这个xml文档。

我已经尝试过谷歌,并继续在这一个死路跑。

+4

你有什么尝试,你卡在哪里? “Socket”和“TcpClient”在这里可能是有用的首发。通过TCP发送时,XML没有什么特别之处。 –

+0

我已经通过tcp连接成功发送了字符串,这同样适用于发送xml数据。只需将xml文档打包成字符串并通过tcp发送?如何传递xml文件的文件名?当系统运行时,我将随机接收多个xml文档。感谢Stu – user2040454

回答

2

一个可能的解决方案是将XML作为一系列字符串或字节数组加载并发送。字节数组的方法可能是最简洁的,使用network library networkcomms.net的应用程序中调用发送会是这个样子:

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(); 
     } 
    } 
} 

和服务器:

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(); 
     } 
    } 
} 

你显然需要下载NetworkCommsDotNet来自网站的DLL,以便您可以将其添加到'使用NetworkCommsDotNet'参考中。另请参阅客户端示例中的服务器IP地址当前为“127.0.0.1”,如果您在同一台计算机上同时运行服务器和客户端,则此功能应起作用。欲了解更多信息,还可以结帐getting startedhow to create a client server application文章。