delphi networking proxy delphi-2010 indy

delphi - Servidor Proxy usando Indy



networking delphi-2010 (1)

Soy nuevo en Indy y quiero construir un servidor proxy simple con él. Esta es una biblioteca bastante grande, y simplemente no sé por dónde empezar. Cuando el cliente se conecta al servidor, OnExucute se activa y recibe la conexión del cliente como parámetro (AContext.Connection).

Quiero hacer lo siguiente:

[client connection] := AContext.Connection read host/port from [client connection] [remote connection] := connect to host/port while both connections alive: if data available in [client connection]: read data from [client connection] write data to [remote connection] if data available in [remote connection]: read data from [remote connection] write data to [client connection]

La pregunta es, ¿qué funciones debería usar para eso? Hay IOHandler propiedad IOHandler en el objeto Connection con toneladas de ellos. Por favor ayuda.

Estoy usando Indy que se envía con Delphi2010.


Indy tiene sus propios componentes de proxy que hacen lo que estás pidiendo. Mire los componentes TIdMappedPortTCP y TIdHTTPProxyServer como lugares de inicio.

TIdMappedPortTCP es un proxy de propósito general que solo pasa datos sin procesar de un lado a otro. Puede usar su evento OnConnect para configurar dinámicamente el host / puerto de destino para esa conexión (por ejemplo, leyéndolo desde el cliente), o puede establecer sus propiedades MappedHost y MappedPort estáticamente para todas las conexiones. Puede utilizar sus eventos OnExecute y OnOutboundData para modificar los datos a medida que pasan a través del proxy, si es necesario.

TIdHTTPProxyServer es un proxy especializado solo para TIdHTTPProxyServer basado en HTTP, donde el cliente usa los verbos HTTP GET , POST , HEAD y CONNECT , especificando las URL absolutas al host / puerto de destino, y luego pasa los encabezados y datos HTTP hacia adelante y hacia atrás según sea necesario ( CONNECT se usa comúnmente para transmitir una conexión SSL / TLS a través de un firewall).