PDA

Ver la Versión Completa : Alguien sabe de algun Chat(Componente) que no se cuelgue al recibir mensajes????


AGAG4
14-12-2004, 21:25:53
Alguien sabe de algun Chat(Componente) que no se cuelgue al recibir mensajes sin usar el TcpServer, ServerSockets y los Indys????

Lo que pasa es que ya he usado estos componentes en los 2 primeros deja de recibir mensajes aprox. a los 50 mensajes recibidos y en los Indys es un Show lo que se tiene que hacer para enviar Mensajes con el idTcpClient con el Demo que incluyen.

Cualquier ayuda se los agradecería muchisimo.

RiverPlate
15-12-2004, 02:26:24
Buenas, che no es para nada complicado hacer un Chat con indy o con el WinSock, tengo un ejemplo muy claro de como hacerlo cualquier cosa dejame tu mail que te lo mando, porque no se como mandarlo por acá, ni tampoco esta publicado en internet porque es un apunte de la facu.

Un abrazo.

P.D: Tenes que usar obviamente "Threading" o Hilos de ejecución sino se te va a colgar seguro, porque va a quedar esperando a recibir respuesta la aplicación sin poder continuar.

AGAG4
15-12-2004, 15:55:47
Gracias por su respuesta le dejo mi correo agag4@hotmail.com, si me hace el favorsote de enviarme un ejemplo, y le comento con el TcpServer si uso los Thearing al recibir mensajes pero se cuelga en determinado numero de mensajes recibidos aprox. 50 mensajes por ejemplo:

TClientDataThread = class(TThread)
private
public
ListBuffer:TStringList;
TargetList:TStrings;
procedure synchAddDataToControl;
constructor Create(CreateSuspended: Boolean);
procedure Execute; override;
procedure Terminate;
procedure LeerMensaje(Mensaje:TStringList);
function BuscarScript(Fol,SucO:String):Boolean;
function DameScript(Mensaje:TStringList):String;
end;
.......
procedure TfGrdCli.TcpServerAccept(Sender: TObject;
ClientSocket: TCustomIpClient);
var
s: string;
DataThread: TClientDataThread;
begin
DataThread:= TClientDataThread.Create(true);
DataThread.TargetList := memRecv.Lines;

memRemoto.Clear;
S:=ClientSocket.Receiveln;

while s <> '' do begin
memRemoto.Add(s);
DataThread.ListBuffer.Add(s);
s := ClientSocket.Receiveln;
end;
DataThread.Resume;
DataThread.LeerMensaje(memRemoto);
label1.caption:=IntToStr(StrToInt(label1.caption)+1);
end;



Que tenga buen día.