2017-05-10 137 views
1

道歉的模糊的問題。我正在嘗試編寫一個c#控制檯應用程序,它將一個xml消息發送到第三方應用程序正在偵聽的端口。應用程序然後發回另一個XML消息,所以我也需要閱讀。任何建議將不勝感激。發送一個xml消息到端口

這種link顯示我正在嘗試做什麼。

+0

確實[此帖](http://stackoverflow.com/questions/9362959/sending-and-receiving-xml-data-over-tcp)幫你嗎? – dotNET

回答

0

如果你不巨大熟悉原始套接字,我會做一些事情,如:

using (var client = new TcpClient()) 
    { 
     client.Connect("host", 2324); 
     using (var ns = client.GetStream()) 
     using (var writer = new StreamWriter(ns)) 
     { 
      writer.Write(xml); 
      writer.Write("\r\n\r\n"); 
      writer.Flush(); 
     } 
     client.Close(); 
    } 

對於不太抽象,你只需直接使用Socket實例,並處理所有手工編碼等,只要給Socket.Send一個byte[]

+0

非常感謝!鍛鍊了魅力! – meangrizzle

0

使用XML的LINQ

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


namespace ConsoleApplication50 
{ 
    class Program 
    { 

     static void Main(string[] args) 
     { 

       //<?xml version="1.0"?> 
       //<active_conditions> 
       // <condition id="12323" name="Sunny"/> 
       // <condition id="13323" name="Warm"/> 
       //</active_conditions> 

      string header = "<?xml version=\"1.0\"?><active_conditions></active_conditions>"; 

      XDocument doc = XDocument.Parse(header); 

      XElement activeCondition = (XElement)doc.FirstNode; 

      activeCondition.Add(new object[] { 
       new XElement("condition", new object[] { 
        new XAttribute("id", 12323), 
        new XAttribute("name", "Sunny") 
       }), 

       new XElement("condition", new object[] { 
        new XAttribute("id", 13323), 
        new XAttribute("name", "Warm") 
       }) 
      }); 

      string xml = doc.ToString(); 

      XDocument doc2 = XDocument.Parse(xml); 

      var results = doc2.Descendants("condition").Select(x => new 
      { 
       id = x.Attribute("id"), 
       name = x.Attribute("name") 
      }).ToList(); 

     } 
    } 

} 
相關問題