Спасибо, что нашли время посмотреть на мой вопрос!Это мой первый пост, поэтому, пожалуйста, извините, если я сделал что-то не так на форуме:)
РЕДАКТИРОВАТЬ : Кажется, я решил свою проблему.Я просто читаю строку TCP-потока по одной за раз, и оттуда я использую операторы if, чтобы определить точки начала и окончания чтения.
Обновленный код:
using System;
using System.Net.Sockets;
using System.Net;
using System.IO;
using System.Threading;
using System.Text;
namespace RFLY_CMD
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Starting...");
TcpListener server = new TcpListener(IPAddress.Parse("0.0.0.0"), 7362);
server.Start();
Console.WriteLine("Listening...");
Console.WriteLine();
while (true)
{
ClientWorking cw = new ClientWorking(server.AcceptTcpClient());
new Thread(new ThreadStart(cw.DoSomethingWithClient)).Start();
}
}
}
class ClientWorking
{
private Stream ClientStream;
private TcpClient Client;
public ClientWorking(TcpClient Client)
{
this.Client = Client;
ClientStream = Client.GetStream();
}
public void DoSomethingWithClient()
{
StreamWriter sw = new StreamWriter(ClientStream);
StreamReader sr = new StreamReader(sw.BaseStream);
string data;
bool cap = false;
string full_string = null;
try
{
while (true)
{
data = sr.ReadLine();
if (!string.IsNullOrEmpty(data) && !string.IsNullOrWhiteSpace(data) || cap)
{
if(data == "... start")
{
cap = true;
Console.WriteLine("---START FOUND!!!---");
}
if (cap)
{
Console.WriteLine(data);
full_string += data + "--:BREAK:--";
}
if (data == "... end")
{
cap = false;
Console.WriteLine("---END FOUND!!!---");
Console.WriteLine();
Console.WriteLine("-------------FULL STRING-------------");
Console.WriteLine(full_string);
}
}
}
}
finally
{
Console.Write("Ending...");
sw.Close();
}
}
}
}
РабочаяСнимок экрана
Завершить редактирование.
Хорошо, вот в чем проблема ... У меня есть приложение, отправляющее XML примерно так:
Снимок экрана XML
Но мне нужна только строка текста в красном поле, показанном здесь:
Целевые данные
Этоя впервые имею дело с XML, и у меня есть небольшой опыт работы с TCP.Кроме этого, я в пути над головой.Заранее спасибо!
Вот мой код:
using System;
using System.Net.Sockets;
using System.Net;
using System.IO;
using System.Threading;
using System.Text;
using System.Xml;
namespace RFLY_CMD
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Starting...");
TcpListener server = new TcpListener(IPAddress.Parse("127.0.0.1"), 7362);
server.Start();
Console.WriteLine("Started.");
while (true)
{
ClientWorking cw = new ClientWorking(server.AcceptTcpClient());
new Thread(new ThreadStart(cw.DoSomethingWithClient)).Start();
}
}
}
class ClientWorking
{
private Stream ClientStream;
private TcpClient Client;
public ClientWorking(TcpClient Client)
{
this.Client = Client;
ClientStream = Client.GetStream();
}
public void DoSomethingWithClient()
{
StreamWriter sw = new StreamWriter(ClientStream);
StreamReader sr = new StreamReader(sw.BaseStream);
string data;
try
{
while (true)
{
data = sr.ReadToEnd();
if (!string.IsNullOrEmpty(data) && !string.IsNullOrWhiteSpace(data))
{
//Console.Clear();
Console.WriteLine(data);
//Console.WriteLine("---------------");
}
sr.DiscardBufferedData();
}
}
finally
{
Console.Write("Ending...");
sw.Close();
}
}
}
}