Хорошо, вот моя проблема.
Я пытаюсь сделать снимок экрана, добавить его в xmldocument, отправить через сокет и прочитать его с помощью XmlReader.
Вот код ...
Серверная сторона
private void SendRandomData(object data)
{
XMLShitSock sock = data as XMLShitSock;
if(sock != null)
{
int incnum = 0;
while(sock.Connected)
{
XmlDocument doc = new XmlDocument();
XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
doc.AppendChild(docNode);
XmlNode productsNode = doc.CreateElement("image");
productsNode.InnerText = Convert.ToBase64String(Program.CaptureImageToBytes(new Point(0, 0), new Rectangle(0, 0, Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height), ImageFormat.Png));
doc.AppendChild(productsNode);
string s = XMLShitSock.GetXmlString(doc);
doc.Save("temp.xml");
sock.WriteXMLMessage(doc);
incnum++;
Thread.Sleep(5000);
}
}
}
sock.WriteXMLMessage
public bool WriteXMLMessage(XmlDocument doc)
{
try
{
ShittySocket.Client.Send(Encoding.ASCII.GetBytes(GetXmlString(doc)));
return true;
}
catch(SocketException se)
{
this.Close();
return false;
}
}
Чтение ввода
private void doInput()
{
MemoryStream ms = new MemoryStream();
NetworkStream ns = new NetworkStream(ShittySocket.Client, false);
while(_connected)
{
if(ns.DataAvailable)
{
StreamReader sr = new StreamReader(ns);
char[] b = new char[512];
int nread = sr.Read(b, 0, 512);
ms.Write(System.Text.Encoding.ASCII.GetBytes(b, 0, nread), 0, nread);
ms.Seek(0, System.IO.SeekOrigin.Begin);
XmlReaderSettings xrs = new XmlReaderSettings();
XmlReader reader = XmlReader.Create(ms);
if(reader.Read())
{
XmlDocument objXmlDocument = new XmlDocument();
objXmlDocument.Load(reader);
onInput(this, objXmlDocument);
ms.Close();
ms = new MemoryStream();
}
}
Thread.Sleep(100);
}
}
Проблема у меня в том, что я получаю сообщение об ошибке в doInput (), говорящее о том, что конец документа был достигнут без поиска тега. Я сохранил XML-файл и просмотрел его, и он существует, и я даже не нашел никаких символов <кроме тех, что есть в реальных тегах, поэтому я не уверен, что здесь происходит. Я явно что-то упускаю. </p>
Кроме того, если у вас есть проблемы с семантикой или стилем кодирования, или с чем-то, что на самом деле не отвечает на вопрос, оставьте это как комментарий, так как это не ответ.
Также
Я просмотрел это - >> http://msdn.microsoft.com/en-us/library/system.xml.xmltextreader.readbase64.aspx и надеюсь, что есть лучший способ справиться с данными base64, чем отделить их от самого XMLDocument. Благодаря.