问题描述
想要將一個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文件处理,每一条放到数组里。传到客户端直接把字符串写到文件里。