【问题标题】:XML over TCP socket基于 TCP 套接字的 XML
【发布时间】:2013-02-04 17:33:46
【问题描述】:

我想知道是否有人可以帮助我解决我遇到的一个小问题。

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

我已经尝试过 Google,但在这方面一直遇到死胡同。

【问题讨论】:

  • 你尝试过什么,你在哪里卡住了? “Socket”和“TcpClient”在这里可能是有用的开始。通过 TCP 发送时,XML 没有什么特别之处。
  • 我已成功通过 tcp 连接发送字符串,同样适用于发送 xml 数据。只需将 xml 文档打包成一个字符串并通过 tcp 发送? xml文档的文件名如何传递?当系统运行时,我将随机接收多个 xml 文档。谢谢斯图

标签: c# xml sockets tcp


【解决方案1】:

一种可能的解决方案是将 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 文章。

【讨论】:

    猜你喜欢
    • 2012-03-26
    • 2014-08-07
    • 2022-07-15
    • 1970-01-01
    • 2017-02-07
    • 2013-05-07
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    相关资源
    最近更新 更多