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).