Compartilhamento de Socket entre Aplicações
Estou desenvolvendo uma aplicação servidora com o Indy (idTCPServer), quando recebo a conexão do cliente e estabeleço essa conexão é possível a partir disso chamar outra aplicação para usar essa conexão estabelecida?
Eu consigo saber a porta e o IP do cliente que estabeleceu a conexão. O objetivo é a partir dessa conexão estabelecida chamar uma aplicação no servidor que possui o idTCPClient e ela passar a se comunicar com o cliente.
Abraço!
Eu consigo saber a porta e o IP do cliente que estabeleceu a conexão. O objetivo é a partir dessa conexão estabelecida chamar uma aplicação no servidor que possui o idTCPClient e ela passar a se comunicar com o cliente.
Abraço!
Adam
Curtidas 0
Respostas
Massuda
14/12/2006
Estou desenvolvendo uma aplicação servidora com o Indy (idTCPServer), quando recebo a conexão do cliente e estabeleço essa conexão é possível a partir disso chamar outra aplicação para usar essa conexão estabelecida?
Pelo que entendi, você está falando em dois programas (servidores) usarem o mesmo IP e porta do TIdTCPServer. Isso não é possível.Eu consigo saber a porta e o IP do cliente que estabeleceu a conexão. O objetivo é a partir dessa conexão estabelecida chamar uma aplicação no servidor que possui o idTCPClient e ela passar a se comunicar com o cliente.
Do lado do TIdTCPClient é a mesma coisa. Um IP/porta do cliente só pode se comunicar com um IP/porta do servidor.Esses ´não pode´ não são limitação do Indy, mas sim características do protocolo TCP/IP.
GOSTEI 0
Adam
14/12/2006
mas eu posso ´transferir´ a conexão para outra aplicação no servidor? Assim, o aplicativo servidor A que recebe a conexão e depois passa essa para outra aplicação no servidor para essa passar a fazer a comunicação com o cliente?
GOSTEI 0
Massuda
14/12/2006
Explique melhor o que seria ´transferir´.
GOSTEI 0
Adam
14/12/2006
seria por exemplo, minha aplicação servidora recebu uma conexão de um cliente na porta 80, a porta do cliente é 1010, após receber essa conexão eu quero passar ela para outra aplicação que passaria a enviar comandos para o cliente na porta 1010 que é a porta de origem, mas não sei como faria isso, ou se dar para fazer, ficou mais claro agora?
GOSTEI 0
Massuda
14/12/2006
O que pode ser feito é seu programa servir de intermediário entre o cliente e o outro programa (proxy).
Talvez :arrow: [url=http://forum.clubedelphi.net/viewtopic.php?t=78216]este tópico[/url] te ajude.
Talvez :arrow: [url=http://forum.clubedelphi.net/viewtopic.php?t=78216]este tópico[/url] te ajude.
GOSTEI 0
Adam
14/12/2006
Massuda acho que pode resolver o meu problema a solucação que apresentou, tenho algumas dúvidas, quando o cliente se conectar ao meu proxy na porta 104, por exemplo, e eu redirecionar ele para a porta 90, para o cliente ele está se comunicando com a porta 104 né? Falo isso por questão de Firewall, pois a minha intenção seria por exemplo receber as conexões em uma porta que geralmente os Firewall deixam aberta e direcionar para outra aplicação em outra porta, aliás, vc sabe de alguma forma deu inspecionar a conexão e de acordo com as características dela eu direcionar para uma porta X ou Y, por exemplo, se for uma requisição HTTP eu direciono para o servidor HTTP e for outro serviço direciono para outra aplicação servidora?
GOSTEI 0
Massuda
14/12/2006
...para o cliente ele está se comunicando com a porta 104 né?
Sim, cliente não enxerga o outro servidor....alguma forma deu inspecionar a conexão e de acordo com as características dela eu direcionar para uma porta X ou Y,
Talvez você tenha que analisar o conteúdo do que chega no seu proxy, mas não tenho idéia se isso é viável ou não.GOSTEI 0
Adam
14/12/2006
Obrigado Massuda, vou estudar o que posso fazer, posteriormente posso até postar a solução que encontrei.
Sobre o que eu queria exatamente fazer no Linux tem uma aplicação chamada inetd que faz isso, vou tentar ver se existe alguma implementação para Windows.
Abraço!
Sobre o que eu queria exatamente fazer no Linux tem uma aplicação chamada inetd que faz isso, vou tentar ver se existe alguma implementação para Windows.
Abraço!
GOSTEI 0