Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Problemas de Comunicacion Indy (Desarrollo de aplicacion para in ciber) (https://www.clubdelphi.com/foros/showthread.php?t=15104)

IcebergDelphi 10-10-2004 20:28:45

Problemas de Comunicacion Indy (Desarrollo de aplicacion para in ciber)
 
Hola amigos del foro , estoy a punto de desarrollar una aplicacion para un ciber, estoy por ahora haciendo pruebas las cuales me han funcionado pero a la vez desepcionado, por ejemplo:

Hice una aplicacion o pantalla para bloquear la maquina cliente y le puse el sigueinte componente:NMStrm (Servidor) y en mi aplicacion la que estara en mi maquina puse el mismo componente pero (Cliente ) Llene los datos del Host: Initec08 y que al dar click en un boton se conecte y todo el rollo, esto funciona bien ya que al dar click desde mi maquina se desbloquea la pantalla que estara en las maquinas clientes pero al hacer esto durante tres veces (dar click en tres ocaciones) para hacer la prueba se desconecta todo y me manda un mensaje de error que la otra aplicacion sigue conectada y ahi se cuelga.

Bueno al ver esto opte por los componentes Indy la version mas nueva que baje de una pagina hice lo mismo que les comento en los parrafos anteriores, pero aqui no pasa nada solo me manda este mensaje de error:
Socket Error: 10049 Cant not assing requested address.

Ya revise todo y nada.

espero que alguien me de una idea o sepa por que sale este error.


Gracias amigos.

DarkByte 10-10-2004 20:43:11

Si pudieses poner el código que usas... así a lo mejor podríamos ver donde está el error...

IcebergDelphi 11-10-2004 05:16:42

Codigo de comunicacion del Ciber
 
Hola amigos del foro gracias por responder , miren como me solicitaron parte del codigo para ver cual sera el problema que expongo en la pregunta , les mostrare.

Primero les muestro la aplicacion que servira para controlar a las demas maquinas esta aplicacion esta en mi maquina:

En este formulario de prueba tengo 2 cajas de texto , dos botones ( Inicio y fin del conteo), y un componte del Indy Llamado:TIdTCPClient y por ultimo unTimer

******Codigo*****

procedure TFrmPruebaServer.MyTimerTimer(Sender: TObject);
begin
EdtFinal.Text:=TimeToStr(Time());
end;

procedure TFrmPruebaServer.BtnIniciarClick(Sender: TObject);//Inicia el conteo//
begin
MyMainServer.Connect;// Componente Indy
EdtIni.Text:=TimeToStr(Time());
LblTotal.Caption:='';
MyTimer.Enabled:=True;//Timer
end;

procedure TFrmPruebaServer.BtnTerminarClick(Sender: TObject);//termnina el conteo//
Var
Resultado:TDateTime;
begin
Resultado:=StrToTime(EdtFinal.Text)-StrToTime(EdtIni.Text);
MyTimer.Enabled:=False;
MyMainServer.Disconnect;
LblTotal.Caption:='El Total consumido es:' + TimeToStr(Resultado);
end;
end.

Y el las propiedades del componente Indy tengo lo siguiente:
Host:=Initec08 //Maquina a la cual me comunicare
Port:=6711

Y por ultimo:

*************************************************
Codigo de la aplicacion que estara en las maquinas
*************************************************
Tengo un formulario con un componente Indy llamado TidTCPServer

Que al crearse el form se activa


procedure TFrmCliente.FormCreate(Sender: TObject);
begin
MyTcpClient.Active:=True;//Componente cuando se activa
end;


procedure TFrmCliente.MyTcpClientConnect(AThread: TIdPeerThread);
//Codigo del componente al recibir comunicacion, el formulario se oculta y dejara trabajar al usuario
begin
FrmCliente.Hide;
end;

procedure TFrmCliente.MyTcpClientDisconnect(AThread: TIdPeerThread);
// Al terminar la comunicacion o desconectarse, el fomulario aparecera y bloquera la maquina.
begin
FrmCliente.Show;
end;

end.


Todo esto lo probe con el otro componente que les meciono en mi pregunta , esto funciona `pero al tratar de conectarce tres veces (hacer click en tres ocaciones para conectarse) la aplicacion se cualga y ya no se cierra el formulario de la maquina cliente)
Es por eso que cambie al componente Indy

Pero Ahora con el componente Indy me lanza el error:
Socket error: 10049 cant not assing requested address

Cual sera el problema del componente INdy o que componente me recomiendan?

Gracias amigos.

DarkByte 14-10-2004 22:36:18

IcebergDelphi, por favor, intenta usar la etiqueta [ Delphi ] cada vez que vayas a escribir código... esta vez lo hago yo para que veas como queda

Código Delphi [-]
procedure TFrmPruebaServer.MyTimerTimer(Sender: TObject);
begin
 EdtFinal.Text:=TimeToStr(Time());
end;

procedure TFrmPruebaServer.BtnIniciarClick(Sender: TObject);//Inicia el conteo//
begin
 MyMainServer.Connect;// Componente Indy
      EdtIni.Text:=TimeToStr(Time());
 LblTotal.Caption:='';
MyTimer.Enabled:=True;//Timer
end;

procedure TFrmPruebaServer.BtnTerminarClick(Sender: TObject);//termnina el conteo//
Var
Resultado:TDateTime;
begin
Resultado:=StrToTime(EdtFinal.Text)-StrToTime(EdtIni.Text);
   MyTimer.Enabled:=False;
     MyMainServer.Disconnect;
LblTotal.Caption:='El Total consumido es:' + TimeToStr(Resultado);
end;
end.

//Y el las propiedades del componente Indy tengo lo siguiente:
Host:=Initec08 //Maquina a la cual me comunicare
Port:=6711

Y por ultimo:

/**************************************************
Codigo de la aplicacion que estara en las maquinas
*************************************************
Tengo un formulario con un componente Indy llamado TidTCPServer

Que al crearse el form se activa
*/

procedure TFrmCliente.FormCreate(Sender: TObject);
begin
MyTcpClient.Active:=True;//Componente cuando se activa
end;


procedure TFrmCliente.MyTcpClientConnect(AThread: TIdPeerThread);
//Codigo del componente al recibir comunicacion, el formulario se oculta y dejara trabajar al usuario
begin
  FrmCliente.Hide;
end;

procedure TFrmCliente.MyTcpClientDisconnect(AThread: TIdPeerThread);
// Al terminar la comunicacion o desconectarse, el fomulario aparecera y bloquera la maquina.
begin
  FrmCliente.Show;
end;

end.

Urano 21-10-2004 15:40:42

De acuerdo a la documentación (http://msdn.microsoft.com/library/de...or_codes_2.asp) el problema no tiene que ver con el código en si, sino con la disponibilidad de la máquina (initec08) o el puerto (6711).
¿Ya probaste que la máquina con la que te conectarás esté disponible? Lo puedes hacer con ping
¿El puerto está disponible? Con los service pack y algunos programas de seguridad se bloquean todos los puertos (por seguridad). Revisa que el 6711 está disponible (en initec08).
Espero que esto te sirva.

diegofhernando 21-10-2004 15:52:21

Qtal... hmm segun veo en lo q expones el evento q deberia generar una respuesta en el pc cliente es OnConnect, q tal si pones el codigo en el evento OnExecute de tu idTCPServer, tambien recuerda poner en la propiedad DefaultPort de este componente el mismo número de puerto q usaras desde el otro lado... espero puedas solucionar tu problema, de no ser asi pues pones de nuevo tu problema y de alguna forma se solucionará.

Salu2 :cool:


La franja horaria es GMT +2. Ahora son las 17:59:53.

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