PDA

Ver la Versión Completa : conexion entre dos aplicaciones delphi a traves de internet


FFe_
01-09-2007, 01:51:25
antes que nada... hola!
soy nuevo por acà y este es mi primer post... està muy bueno el foro y la comunidad. Son todos muy amables y solidarios. Muchas Gracias!!!:):):) de antemano.

Bueno, estuve leyendo algunos post al respecto y hay algo que no llego a determinar.
como dice el tìtulo, necesito que una aplicacion hecha en delphi instalada en computadoras diferentes, en redes diferentes, se puedan enviar informaciòn entre sì. Es decir, que pueda enviarle informaciòn a cualquier computadora del mundo que tenga instalada la aplicaciòn. Por lo que estuve leyendo, es necesario conocer la ip pùblica de ambos ordenadores.
mi pregunta es, Esto ¿es necesariamente asì? ¿o existe alguna otra forma de establecer dicha conexión ?

cualquier duda en mi planteo, será gratamente aclarado...

JoseAntonio
01-09-2007, 03:38:14
Si se puede, usando los componentes Indy, suerte.

FFe_
01-09-2007, 16:30:07
muchas gracias, antonio, por tu pronta respuesta a este novato. me dedicare a investigar al respecto. ¿podrías darme alguna guía acerca de por donde empezar?

FFe_
01-09-2007, 23:04:20
perdon que postee una vez atras de otra pero...

no entiendo nada!!!!!! :eek::eek:

encontre algunas cosas... pero niguna lo sufucientemente básica como para que yo a pueda seguir.... (si.... parece que soy mas tonto de lo que creia....:(). ¿alguien me podría indicar donde encuentro una explicación bien básica?
(el ejemplo del chat que viene en delphi no puedo encontrarlo (tengo el 2007), baje el ejemplo de chat de la pagina del proyecto indy pero me da un error "tidTCPclient does not contain a member called writeln" .. entonces ¿como mando la información a traves de la conexión?

bueno.... estoy un tanto desanimado...:(


ahhh... me acabo de dar cuenta que tenía un problema de versiones :P ahora tengo el problema que el compilador no reconoce el tipo "TIdContext" (que es el que se pasa como parámetros en los modulos que manejan los eventos de los sockets) alguien sabe donde se puede sacar la definicion del tipo? o me estará faltando algun uses?

en efecto.... faltaba incluir "idcontext" en los uses....

dec
02-09-2007, 03:28:47
Hola,

Asegúrate de que descargas los ejemplos para la versión de los componentes Indy (http://www.indyproject.org/index.en.aspx) que tengas instalada. En Delphi 2007, por defecto, se instala la versión 10 de los componentes, aunque... no estoy seguro de que sea la última versión, esto es, la que puedes descargar desde el sitio Web de los componentes.

Respecto de "TIdContext"... la unidad en que se define es "IdContext.pas", y observa que este patrón (tipos/unidades) se sigue (al menos en buena medida) en todos los componentes Indy.

FFe_
02-09-2007, 18:44:14
Gracias Dec, lo que dices es cierto. muy buena observación :):):);
aquí encontré una página en borland que trata sobre las diferencias entre indy 9 e indy 10:

http://bdn1.borland.com/borcon2004/article/paper/0,1963,32160,00.html

a mí me sirvió para comprender un par de cosas... quizás a otros también.
con lo que lei aquí, hice mi primer servidor. que es muy tonto en realidad pero aún así...
unit server;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,IdBaseComponent, IdComponent, IdCustomTCPServer, IdTCPServer, idcontext, StdCtrls; type TForm1 = class(TForm)
server: TIdTCPServer;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure IndyConnect(AContext: TIdContext);
procedure serverExecute(AContext: TIdContext);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var Form1: TForm1;

implementation {$R *.dfm}

procedure TForm1.IndyConnect(AContext: TIdContext);
// cuando se produce una conexión, enviar el mensaje 'hola....'
begin
acontext.Connection.IOHandler.WriteLn('Hola!!!! estás conectado');
end;

procedure TForm1.serverExecute(AContext: TIdContext);
//cuando llega información al servidor, si esta es igual a 'hola' responder...
var text: string;
begin
with acontext.Connection.IOHandler do begin
text:= readln;
if sametext (text, 'hola')
then
begin
text:= 'hola.¿que tal?';
writeln (text);
end;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin //setea el puerto de escucha del servidor y lo abre(escucha)
server.DefaultPort:=10300;
server.active:= true; end;

end.

lo probe haciendo un telnet al puerto 10300 de 127.0.0.1, aparentemente funciona, pero no me muestra el mensaje 'hola estas conectado' . porque puede ser esto? es por el telnet?