Я создал прозрачный прокси-сервер для фиксации входящих данных, но я хочу, чтобы все данные из прослушивающего обратного вызова в основном потоке (где я открыл сокет). Каков наилучший способ сделать это на C#?Получить данные из обратного вызова прослушивателя tcp в основном потоке
Я использую библиотеку TrotiNet плюс некоторая логика перезаписи - исправление заголовка ответа. Простой код - следующий
using System;
using TrotiNet;
namespace TrotiNet.Example
{
public class TransparentProxy : ProxyLogic
{
public TransparentProxy(HttpSocket clientSocket)
: base(clientSocket) { }
static new public TransparentProxy CreateProxy(HttpSocket clientSocket)
{
return new TransparentProxy(clientSocket);
}
protected override void OnReceiveRequest()
{
Console.WriteLine("-> " + RequestLine + " from HTTP referer " +
RequestHeaders.Referer);
}
protected override void OnReceiveResponse()
{
Console.WriteLine("<- " + ResponseStatusLine +
" with HTTP Content-Length: " +
(ResponseHeaders.ContentLength ?? 0));
}
}
public static class Example
{
public static void Main()
{
int port = 12345;
bool bUseIPv6 = false;
var Server = new TcpServer(port, bUseIPv6);
Server.Start(TransparentProxy.CreateProxy);
Server.InitListenFinished.WaitOne();
if (Server.InitListenException != null)
throw Server.InitListenException;
while (true)
{
//need to get the response data here
System.Threading.Thread.Sleep(1000);
}
//Server.Stop();
}
}
}
Так в основном, мне нужно, чтобы получить все данные, которые поступают в OnReceiveResponse в основном потоке (Example.Main исполнителе). Я делаю такой прокси для одного вызова - так что данные не более 1 КБ.
могли бы вы предоставить более подробную информацию? Показывать код инициализации и управления соединением, также каждый орган должен знать код с вами, обрабатывая данные в основном потоке, и какую сумму вы хотите сохранить? – gabba