Utilisateur anonyme
-
8 janv. 2002 à 22:43
IV4
Messages postés1Date d'inscriptionsamedi 18 décembre 2004StatutMembreDernière intervention30 avril 2006
-
30 avril 2006 à 17:42
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
IV4
Messages postés1Date d'inscriptionsamedi 18 décembre 2004StatutMembreDernière intervention30 avril 2006 30 avril 2006 à 17:42
Utilise un timer c'est pas top, le mieu c'est de faire un object de type CReceivingDate = class(thread)....
Comme ca tu peu avoir un thread externe qui reagit a la reception de donnée, ceci ne bloquant pas ton appli
Ensuit tu crée des evenement que le thread appel du genre l'ensemble du thread en simple donne:
procedure Execute(); override;
var
buf: string;
L: longint;
begin
while not TerminateurDuThread do begin
if TcpCon.Connected then begin
DataArrived:=false;
TcpCon.ReceiveBuf(L,4);
TcpCon.ReceiveBuf(Buf[1],L);
if Assigned(OnReceivedData) then
OnReceivedData(Buf);
end;
end;
Le hic c'est qu'il faut connaitre la taille de la reception, en général au debut d'une reception il y a les 4 1er octect qui sont pour dire la taille du flux arrivant, donc stock dans le L
Ainssi ce thread reste bloque sur TcpCon.ReceiveBuf(L,4) Tant que pas donnée rentre d'ou il est très important d'en faire un thread sinon toute l'appli ce bloque, et voila t'a un evenement De reception ;)
cs_acce
Messages postés2Date d'inscriptionlundi 7 juin 2004StatutMembreDernière intervention 8 juillet 2004 9 juin 2004 à 00:29
Lol Amusant comme Source. Sufit de trouver un serveur.. Meme si tout les sockets Delphi se ressemblent et peuvent pratiquement tous etre joint...
Bon continu comme ca et fait un bon chat ^^.
cs_Laskar
Messages postés15Date d'inscriptionsamedi 11 janvier 2003StatutMembreDernière intervention 1 novembre 2010 21 oct. 2003 à 09:37
aKheNathOn, j'ai trouvé qu'il était possible d'installer le composant qui se trouve dans le répertoire bin. Il s'appelle dclsocket.bpl.
Ca marche ...
Ben ça veut dire que sous Delphi 7.0 Ils utilisent pas le même ocx que celui que j'utilise, donc en gros t'as pas ce composant d'installé avec la V7 ... De toute façon d'aprés ce que j'ai compris le delphi 7.0 est une version .net, donc je te conséille comme même de downloader le delphi 6.0.
Bonne prog et à +
cs_Laskar
Messages postés15Date d'inscriptionsamedi 11 janvier 2003StatutMembreDernière intervention 1 novembre 2010 19 oct. 2003 à 15:51
Ton code ne marche !
J'utilise Delphi 7.0 et, au moment de charger le source, Delphi me dit : Classe TClientSocket non trouvée ...
30 avril 2006 à 17:42
Comme ca tu peu avoir un thread externe qui reagit a la reception de donnée, ceci ne bloquant pas ton appli
Ensuit tu crée des evenement que le thread appel du genre l'ensemble du thread en simple donne:
pReceivedInfo = procedure(Buf: string) of object;
property OnReceivedData: pReceivedInfo read FReceivedInfo write FReceivedInfo;
CReceiveData = class(TThread)
TcpCon: TTcpClient;
FReceivedInfo : pReceivedInfo;
constructor Create(Host: string;Port: integer);
procedure Execute(); override;
property OnReceivedData: pReceivedInfo read FReceivedInfo write FReceivedInfo;
end;
constructor CReceiveData.Create(Host: string;Port: integer);
begin
inherited Create(false);
FreeOnTerminate := True;
Priority := tpLower;
TcpCon := TTcpClient.Create(nil);
TcpCon.RemoteHost := Host;
TcpCon.RemotePort := Port;
TcpCon.Connect;
end;
procedure Execute(); override;
var
buf: string;
L: longint;
begin
while not TerminateurDuThread do begin
if TcpCon.Connected then begin
DataArrived:=false;
TcpCon.ReceiveBuf(L,4);
TcpCon.ReceiveBuf(Buf[1],L);
if Assigned(OnReceivedData) then
OnReceivedData(Buf);
end;
end;
Le hic c'est qu'il faut connaitre la taille de la reception, en général au debut d'une reception il y a les 4 1er octect qui sont pour dire la taille du flux arrivant, donc stock dans le L
Ainssi ce thread reste bloque sur TcpCon.ReceiveBuf(L,4) Tant que pas donnée rentre d'ou il est très important d'en faire un thread sinon toute l'appli ce bloque, et voila t'a un evenement De reception ;)
9 juin 2004 à 00:29
Bon continu comme ca et fait un bon chat ^^.
21 oct. 2003 à 09:37
Ca marche ...
19 oct. 2003 à 18:26
Bonne prog et à +
19 oct. 2003 à 15:51
J'utilise Delphi 7.0 et, au moment de charger le source, Delphi me dit : Classe TClientSocket non trouvée ...
keskesavedire ?
14 janv. 2002 à 18:15
13 janv. 2002 à 23:28
Donc pour le serveur, met ce code la : ( moi je fais ca avec un memo donc )
Memo.Lines.Add('Client : ' + Socket.ReceiveText);
Et pour le client je te laisse faire les modifs.
Et voila...
8 janv. 2002 à 22:43