Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-08-2010
JesusRamirez JesusRamirez is offline
Registrado
 
Registrado: ago 2010
Posts: 1
Poder: 0
JesusRamirez Va por buen camino
Duda en Sockets MultiThread

Hola,

Llevo varios dias atascado con un problema, he dado bastantes vueltas por internet sin encontrar solucion a lo que quiero realmente hacer.

Estoy trabajando en un Proxy Redirector, basicamente todo el trafico que le llega por un puerto de escucha, lo redireccione a otra IP & Port.

Funciona perfectamente para conexiones de 1 - Proxy - Servidor.

Pero cuando hay varias conexiones se hace un lio y sé perfectamente porque ocurre, pero no encuentro el parametro que me diga cual es la conexion realmente activa en ese momento para responderle por ese thread.

Código Delphi [-]
procedure TForm1.OnClientRead1(Sender: TObject; Socket: TCustomWinSocket);
var pakete:string;
Athread:integer;
begin

  try
  contador:=contador+1;
  pakete:=Socket.ReceiveText;
  ClientSocket1.Socket.SendText(pakete);
  //ServerSocket1.Socket.Connections[AThread].SendText(pakete);
  form2.richedit1.text:=form2.richedit1.text+#13+DateToStr(Date) +'  ' +FormatDateTime('hh:nn:ss:zzz', Time)+' From Client: '+(Socket.RemoteHost)+#13+pakete+#13;

  except
     on E : Exception do
     begin
       ShowMessage('Exception class name = '+E.ClassName);
       ShowMessage('Exception message = '+E.Message);
     end;
  end;
  end;


procedure TForm1.OnRead1(Sender: TObject; Socket: TCustomWinSocket);
var
l:string;
begin
  l:=Socket.ReceiveText;
  Asocket1.SendText(l);
 form2.richedit1.text:=form2.richedit1.text+#13+DateToStr(Date) +'  ' +FormatDateTime('hh:nn:ss:zzz', Time)+' From Server: '+(Socket.RemoteHost)+#13+l+#13;
 end;

ServerSocket1.Socket.Connections[AThread].SendText(pakete); <---- ahora mismo estaria respondiendo a todas las conexiones activas por el bucle, pero mi pregunta es como deberia realizarlo para responder al que me ha escrito? Socket.Connections[PARAMETRO QUE NECESIO CONOCER].SendText

Muchas gracias!
Responder Con Cita
  #2  
Antiguo 20-08-2010
dreamermx dreamermx is offline
Registrado
 
Registrado: ene 2010
Posts: 5
Poder: 0
dreamermx Va por buen camino
Hola Jesus:
Cada socket que atiende el servidor tiene un id unico, es cuestion de que lo identifiques, en el parametro (Socket:TCustomWinSocket)
Socket.SocketHandle.
Al ejecutar el metodo OnClientRead del Servidor y el parametro Socket.
Determinan que conexion cliente es atendida en ese momento por el servidor.
Para saber que cliente en particular es, lo determinas con el valor Socket.SocketHandle.

Espero te sea de ayuda.
Responder Con Cita
  #3  
Antiguo 21-08-2010
Avatar de Enan0
Enan0 Enan0 is offline
Miembro
 
Registrado: may 2004
Ubicación: Argentina
Posts: 565
Poder: 20
Enan0 Va por buen camino
por lo que yo pude enteder esta haciendo una especie de proxy.

Etonces Tiene..

un Cliente
Un server.

Con Su navegador Se conecta al Server y hace la peticion de Algo a la red...
Luego pasa la informacion al cliente y ejecuta dicha peticion...
La informacion llega y el cliente se la devuelve al Server...

En conexiones 1 a 1 le funciona bien ya que el server solo tiene un cliente activo..

El problema recide cuando tiene multiples Conexiones al Server (es decir por ejemplo un navegador y el MSN (por ejemplo).

el tema es que no sabe diferenciar que paquete va a cada conexion...

una buena opcion seria almacenar la Ip Origen y la Destino (esa informacion creo que esta disponible.. (origen seguro) destino.. habria que ver si ya esta convertida o se envia el host...

ahi cargarlas en un Array.. y por ultima buscar a quien corresponde..

ojo es lago medio descolgado. pero por el momento no se me ocurre otra cosa
Responder Con Cita
  #4  
Antiguo 21-08-2010
dreamermx dreamermx is offline
Registrado
 
Registrado: ene 2010
Posts: 5
Poder: 0
dreamermx Va por buen camino
Tienes razón Enan0.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
componente MultiFileDownloader multithread para bajar http y ftp en indy 10 softx2009 Internet 3 18-01-2010 16:17:47
Duda con sockets Khronos API de Windows 2 30-10-2008 15:35:27
Duda de conección con Sockets Paulao Varios 4 08-07-2008 20:40:47
Sockets con DB Slash Internet 1 08-07-2004 19:58:18
sockets the darkness Internet 7 28-04-2004 18:56:13


La franja horaria es GMT +2. Ahora son las 16:47:59.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi