scoket傳輸XML文件內容

问题描述

想要將一個XML文件裡的內容:如:<bookstore><bookgenre="fantasy"ISBN="2-3631-4"><PN>a</PN><Model>asddfadfa</Model><OP>fas</OP><Line>dfasdf</Line><UpTime>2008/11/18下午01:39:50</UpTime></book></bookstore>

通過Sockect從客戶端傳輸到服務器,並在服務器上讀取節點的值,並在服務器上生成這個xml檔案

解决方案

解决方案二:
把它当成普通的字符串直接发送就行了。
解决方案三:
TS顶贴接分
解决方案四:
读文件为byte[],然后通过Socket发送,接收后通过StreamRead读byte[],还原成字符串。注意一点,流操作时需要提供相同的Encoding.ASCII或Encoding.Default。
解决方案五:
byte[]b=Encoding.GetBytes(xmlString);socket.Send(b);server.Receive(b);stringxml=Encoding.GetString(b);都是伪代码,意思是这样.
解决方案六:
引用4楼bbbbbb888888的回复:

byte[]b=Encoding.GetBytes(xmlString);socket.Send(b);server.Receive(b);stringxml=Encoding.GetString(b);都是伪代码,意思是这样.

我的XML檔案有幾人節點,我需要在接收時將XML節點的值分別顯示出來,要怎麼做?
解决方案七:
要么在客户端发送xml前做处理,要么接到字符串后做处理。跟socket无关,socket只负责通过协议传输数据(二进制流)
解决方案八:
[XmlRoot("bookstore")]publicclassbookstore{[XmlArray("book")][XmlArrayItem("book",typeof(book))]publicbook[]{get;set;}}publicclassbook{[XmlAttribute("genre")]publicstringgenre{get;set;}...[XmlAttribute("genre")]publicstringPN{get;set;}}TcpClienttc=newTcpClient();tc.Connect(...);NetworkStreamns=tc.GetStream();byte[]buffer=newbyte[512];intreadBytes=ns.Read(buffer,0,512);Streamms=newMemoryStream(buffer,0,readBytes);XmlSerializerxSer=newXmlSerializer(typeof(bookstore));bookstorebs=xSer.Deserialize(ms)asbookstore;

解决方案九:
注意编码要一致,客户端Encode,然后当成普通string传即可,服务器端收到后Decode,然后当成普通的XML处理即可
解决方案十:
我的Server端要怎麼樣一個監聽有沒有數據往上傳?因為我寫好了,Client與Server的程式都開著,當我第一次在Client上傳數據時,Server端可以得到數據,但是當我在Client第二次點擊傳輸時,Client卻死掉了一樣怎麼回事?
解决方案十一:
第一次传输后,流关闭掉了吗?
解决方案十二:
我的Client的代碼是:intport=2000;stringhost="172.17.161.99";IPAddressip=IPAddress.Parse(host);IPEndPointipe=newIPEndPoint(ip,port);Socketc=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);c.Connect(ipe);stringsendStr=spn+"/"+smodel+"/"+sop+"/"+sline+"/"+suptime;byte[]bs=Encoding.ASCII.GetBytes(sendStr);c.Send(bs,bs.Length,0);stringrecvStr="";byte[]recvBytes=newbyte[1024];intbytes;bytes=c.Receive(recvBytes,recvBytes.Length,0);recvStr+=Encoding.ASCII.GetString(recvBytes,0,bytes);Console.WriteLine(recvStr);c.Shutdown(SocketShutdown.Both);c.Close();

Server端的代碼是:intport=2000;stringhost="172.17.161.99";IPAddressip=IPAddress.Parse(host);IPEndPointipe=newIPEndPoint(ip,port);Sockets=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);s.Bind(ipe);s.Listen(0);Sockettemp=s.Accept();stringrecvStr="";//string[]items=recvStr.Split(newchar[]{'/'});byte[]recvBytes=newbyte[1024];intbytes;bytes=temp.Receive(recvBytes,recvBytes.Length,0);recvStr+=Encoding.ASCII.GetString(recvBytes,0,bytes);MessageBox.Show(recvStr);stringsendStr="Ok!Sucess!";byte[]bs=Encoding.ASCII.GetBytes(sendStr);temp.Send(bs,bs.Length,0);temp.Shutdown(SocketShutdown.Both);temp.Close();s.Shutdown(SocketShutdown.Both);s.Close();

以上是我的代碼,Client與Server的程式都開著,出現兩種情況:1.當我第一次在Client上傳數據時,Server端可以得到數據,但是當我在Client第二次點擊傳輸時,Client卻死掉了一樣2.當我關掉Server端程式時,Client端又正常了
解决方案十三:
有人回答不咯
解决方案十四:
?????????
解决方案十五:
把xml文件当成file文件处理,每一条放到数组里。传到客户端直接把字符串写到文件里。

时间: 2024-08-07 13:03:23

scoket傳輸XML文件內容的相关文章

讀取文件內容並在頁面上顯示

问题描述 如何讀取服務器的文件內容,並顯示在頁面上?不管是什麼文件? 解决方案 解决方案二:不同文件使用不同读出方法啊你做个抽象类,里面做个抽象方法,然后继承,提供不同实现.然后判断读取的文件类型,然后选择不同方法吧解决方案三:using(StreamReadersr=newStreamReader("e:\1.txt")){stringtxt=sr.ReadToEnd();Response.Write(txt);}解决方案四:引用2楼chen_lichao的回复: using(Str

java 讀取html文件內容

问题描述 我要讀取html文件裡面的內容如:<title>內容</title><p>內容</p>求詳細的方法和代碼 解决方案 解决方案二:思路如下:先把HTML转化为XML,然后再解析XML.这儿有一个我未完成的读取开心网网页并解析的例子,你可以参考下:解决方案三:htmlparser或正则解决方案四:regex解决方案五:apache的htmlclient+htmlparser可以帮你解决方案六:小项目就用正则表达式,大的就研究htmlparser吧

Csharp 讀寫文件內容搜索自動彈出 AutoCompleteMode

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace WindowsFormsStyle { public partial clas

ASP.NET技巧:將datagrid控件內容輸出到excel文件

asp.net|datagrid|datagrid控件|excel|技巧 一個將datagrid控件內容輸出到excel文件的demo. 生成EXCEL文件#region 生成EXCEL文件public void setToExcel(){//            Response.Clear(); //            Response.Buffer= true; //            Response.Charset="utf-8";         if (efor

在頁面上顯示xml節點及內容

问题描述 StreamReadersr=newStreamReader(path);stringtxt=sr.ReadToEnd();Response.Write(txt);以上運行的時候只是顯示了xml檔裡的內容,並沒有顯示節點.要怎麼樣寫才能顯示節點及內容? 解决方案 解决方案二:XmlDocumentdoc=newXmlDocument();doc.LoadXml("...");XmlNoderoot=doc.DocumentElement;XmlNodenode=root.Se

一个比较有用的XML文件操作类 C#代码 可以继续扩展

xml|比较 public class CXml {     private string strXmlFile;      private XmlDocument objXmlDoc = new XmlDocument();      public CXml(string xmlFile)      {          //构造函数          try          {               objXmlDoc.Load(xmlFile);          }       

c# xml-关于C# 操作XML文件问题

问题描述 关于C# 操作XML文件问题 10C 1.如何将SQL返回的DataTable生成如下格式? <?xml version=""1.0"" standalone=""yes""?><SPDHSet> <Table TitleId=""1""> <GoodID>0401020014</GoodID> <FactCod

Ruby程序中创建和解析XML文件的方法_ruby专题

使用builder创建XML builder安装方法: gem install builder require 'builder' x = Builder::XmlMarkup.new(:target => $stdout, :indent => 1) #":target =>$stdout"参数:指示输出内 容将被写向标准输出控制台 #":indent =>1"参数:XML输出形式将被缩 进一个空格字符x.instruct! :xml, :

C#XML文件读写操作

/// <summary> /// 描述: /// 加载播放列表 /// </summary> private void LoadPlaylist() { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(_strXmlFilePath); // 加载XML文件 XmlNodeList nodeList = xmlDoc.SelectSingleNode("PlayList").SelectNodes(&qu