PDA

Ver la Versión Completa : Problemas con conexión de sockets


cone220
10-09-2003, 23:54:01
Tengo el siguiente código en un botón:

procedure TForm1.Button2Click(Sender: TObject);
begin
CS1.Port := strtoint(Edit2.Text);
CS1.Active := true;
CS1.Socket.SendText(Edit3.Text);
CS1.Active := true;
end;

El server socket está permanentemente escuchando. El problema es que para que la información que quiero enviar, solo llega luego de hacer click DOS VECES en el botón.

:confused:

__hector
11-09-2003, 15:31:31
Primero, veo que pones la propiedad Active a True dos veces... cosa que me parece extraña e innecesaria.

Segundo, quizas cuando haces clic en el boton, el ClientSocket intenta conectarse, pero al tratarse de una conexion (o proceso) asincrono, no detiene la ejecucion del programa e intenta mandar texto a una conexion que todavia no ha sido establecida. Intenta poner el codigo que envia el texto en el evento OnConnect del ClientSocket a ver si funciona.

Ah, y corrige eso de Active := true; dos veces ;)

DarkByte
18-09-2003, 18:16:30
Hola, yo tengo el mismo problema, solo que el texto que mando no es siempre el mismo, por lo que no lo puedo poner en OnConect, ¿Cómo se hace para que haga una pausa hasta conectarse?

Gracias

__hector
19-09-2003, 02:53:46
No puedes mantener la conexion siempre activa ?

Asi no tendrias problemas de esperar a que se conectase para enviar cada mensaje

DarkByte
19-09-2003, 08:24:24
No, lo que estoy intentando, es que, si el usuario no está conectado al intentar enviar un texto por el socket, se conecte. Lo bonito sería que esperase hasta que terminase de conectarse para enviar el mensaje.

__hector
19-09-2003, 16:06:34
No se como esperar a que se realice la conexion para poder enviar el mensaje (no me he detenido a leer), pero puedes utilizar una chapuza para salir 'de momento' de tu problema. Declaras una variable global, y si la conexion no esta hecha, haces la conexion, asignas el valor a enviar a la variable, y en el evento onConnect envias el texto que tiene dicha variable

Deberia funcionar asi...