besoin daide

besoin daide - Delphi/Pascal - Programmation

Marsh Posté le 02-07-2002 à 22:28:43    

j'ai besoin de qqn qui s'y connait un peu en delhpi sur lutilisation des socket, jai fait une appli et ya qq trucs qui marchent pas. je peut pas poster tout le code ici (un peu trop long) mais si qqn accepte de m'aider je lui envoie en pv


Message édité par red faction le 02-07-2002 à 22:29:22
Reply

Marsh Posté le 02-07-2002 à 22:28:43   

Reply

Marsh Posté le 03-07-2002 à 14:30:17    

Euh....
Tu dis ton pb ici et on voit ce qu'on peut faire  :D


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 03-07-2002 à 16:34:35    

enfait je fait transfere des fichiers entre le client et le serveur. tout fonctionne sauf si le fichier est un peu trop gros (>1mo) a ce moment il commence a le charger puis sarrette apres un moment. si je reesaye de le charger il reprend ou il est arriver puis sarette de nouveau. example :
 
je demande de charger le fichier  
0 --> 33%  puis sarrette  
si je redemande se meme fichier  
33 --> 66%
etc...
 
par contre avec de petit fichier sa marche impec

Reply

Marsh Posté le 03-07-2002 à 16:51:09    

G eu le même pb  :D  
Tu l'envois avec quoi ? (sendstream, sendbuff ?) Et comment ? (assign & co ou TFileStream ?)


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 06-07-2002 à 15:12:51    

bon ben jpense que ca vient du fait que le composant envoie des string au lieu de tstring du coup tout arrive collé. sous delphi6 jarrive pas a trouve le composant pour envoyer du tstring... comment on fait ? apparament c ds delphi5 mais je lai po :-( ptet qd installant une extention...

Reply

Marsh Posté le 06-07-2002 à 17:31:17    

Utilise sendbuffer
oubli sendtext
le pb C que tu exploses le buffer windows et que tu tests pas si l'envois C bien passé
 :hello:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 06-07-2002 à 17:33:27    

red faction a écrit a écrit :

bon ben jpense que ca vient du fait que le composant envoie des string au lieu de tstring du coup tout arrive collé. sous delphi6 jarrive pas a trouve le composant pour envoyer du tstring... comment on fait ? apparament c ds delphi5 mais je lai po :-( ptet qd installant une extention...




 
si tout arrive collé ça a rien à voir
si tu veux envoyer un TStrings faut tout redécoder à l'arriver.
Et c'est pas clair.
Tu envoies comment exactement ?
Si tu fais des Send.. séparés c'est normal que tout soit "collé" : il fait un buffering, c'est WinSock.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 06-07-2002 à 17:36:53    

Ha et essaie de mettre des titres explicites à tes topics :sarcastic:


Message édité par antp le 06-07-2002 à 17:37:00

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 06-07-2002 à 17:36:56    

antp a écrit a écrit :

 
 
si tout arrive collé ça a rien à voir
si tu veux envoyer un TStrings faut tout redécoder à l'arriver.
Et c'est pas clair.
Tu envoies comment exactement ?
Si tu fais des Send.. séparés c'est normal que tout soit "collé" : il fait un buffering, c'est WinSock.




C pas wraiment WinSock... C le TCP C pas parreil avec l'UDP
On peut le déactiver mais C trés peu recommendé
 :hello:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 06-07-2002 à 17:37:26    

bhen les sockets Delphi c'est pas une encapsulation de Winsock :??:


Message édité par antp le 06-07-2002 à 17:37:32

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 06-07-2002 à 17:37:26   

Reply

Marsh Posté le 06-07-2002 à 17:38:22    

antp a écrit a écrit :

bhen les sockets Delphi c'est pas une encapsulation de Winsock :??:




si
mais ça vient du protocole


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 06-07-2002 à 17:38:30    

oui je fait des sendtext separe et il colle tout . le probleme c qua larrivee faut tout separe (en fait jenvoie une liste de fichiers) c pour ca quavec du tstring ce serait ptet plus facile  
 
avec sendbuffer ca changera quoi ?

Reply

Marsh Posté le 06-07-2002 à 17:40:50    

red faction a écrit a écrit :

oui je fait des sendtext separe et il colle tout . le probleme c qua larrivee faut tout separe (en fait jenvoie une liste de fichiers) c pour ca quavec du tstring ce serait ptet plus facile  
 
avec sendbuffer ca changera quoi ?




rien
fo que fasses un protocole de comunication (commandes, etc...)
mais tu veux faire quoi exactement ? juste transfert de fichiers ?


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 06-07-2002 à 17:43:34    

ici exemples de transfert de fichiers et communication rezo
http://users.pandora.be/dirk.claessens2/
 :hello:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 06-07-2002 à 17:48:57    

[SDF]Poire a écrit a écrit :

 
rien
fo que fasses un protocole de comunication (commandes, etc...)
mais tu veux faire quoi exactement ? juste transfert de fichiers ?




 
oui je fais un transfert de fichier mais avant faut que je transmette la liste et v uque tout les noms de fichiers sont collé avec ma methode apres faut passer son temps a les decoller (vu que les noms de fichiers sont pas de la meme longeur)

Reply

Marsh Posté le 06-07-2002 à 17:53:04    

red faction a écrit a écrit :

 
 
oui je fais un transfert de fichier mais avant faut que je transmette la liste et v uque tout les noms de fichiers sont collé avec ma methode apres faut passer son temps a les decoller (vu que les noms de fichiers sont pas de la meme longeur)




Va voir le lien que G donné


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 06-07-2002 à 17:54:08    

Solution simple:
Tu mets tes noms dans un TStringList, tu envoies le contenu de la propriété Text de la TStringList, de l'autre côté tu mets la chaîne reçue dans la propriété Text d'une TStringList, ça résout ton problème de découpe.


Message édité par antp le 06-07-2002 à 17:54:21

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 06-07-2002 à 18:08:37    

antp a écrit a écrit :

Solution simple:
Tu mets tes noms dans un TStringList, tu envoies le contenu de la propriété Text de la TStringList, de l'autre côté tu mets la chaîne reçue dans la propriété Text d'une TStringList, ça résout ton problème de découpe.




hihi en partit :)
C la solution que j'avais employé à l'époque et telle trouve vite ces limites :)


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 07-07-2002 à 14:51:22    

ben jai trouve une autre solution(ptet pas super fiable mais bon) :y suffit dattendre un ptit peu entre 2 sendtext (avec un sleep(50) par ex. et la ca arrive morceau par morceau de lautre cote  :)  le seul prob c de regle le sleep, si c trop long on risque dattendre pour rien et ds lautre cas ben... ca risque de foire a nouveau. lideal se serait de pouvoir verifier si ca bien ete recu et de faire un sleep en attendant :  
 
du genre  
 
sendtext("......." );
while (not (client.received) do
sleep();
sendtext("......." );
 

Reply

Marsh Posté le 07-07-2002 à 14:57:38    

Suffit que l'autre côté dise "bien reçu" après chaque message et c'est bon, non ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 07-07-2002 à 15:03:18    

tu vas m'abandonner ce sendtext oui ???
Et va voir le link !!!


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 07-07-2002 à 15:27:54    

Et si tu envoyais un caractère 0 comme pour marquer la fin de tes chaines de caractères. Evidemment, si tu utilisais le C, tu n'aurais pas eu ce problème :D

Reply

Marsh Posté le 07-07-2002 à 15:57:00    

Kristoph a écrit a écrit :

Et si tu envoyais un caractère 0 comme pour marquer la fin de tes chaines de caractères. Evidemment, si tu utilisais le C, tu n'aurais pas eu ce problème :D




 :lol:  :lol:  :lol:  
nimporte nawak
 
Sendtext :gun:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 07-07-2002 à 16:44:10    

clair ça a rien à voir :sarcastic:
on envoie ça à une fonction de l'API Windows, donc la chaîne est convertie à un moment ou un autre en PChar... soit une chaîne char* finie par un 0


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 07-07-2002 à 17:10:52    

Je crois pas que TCP soit un protocole pour envoyer des chaines de caractères mais des données binaires brutes. Donc ce que vous envoyés c'est des données brutes. CF man socket :
 
NOM
       send, sendto, sendmsg - Envoyer un message sur une socket.
 
SYNOPSIS
       #include <sys/types.h>
       #include <sys/socket.h>
 
       int send(int s, const void *msg, size_t len, int flags);
 
 
ca prend un void * et le paramètre de taille. Donc en C, si tu fais :  

Code :
  1. char texte[20];
  2. send(s,texte,20,...);


Ca envoye le \0 terminal qui permet de connaitre la taille de la chaine sans avoir à faire d'autres manips ;)
 
Bien sur, si ca vous embete, vous pouvez aussi coller un retour chariot ( \n ) à la fin de votre chaine pour délimiter celles ci
 
PS: les sockets Windows sont identiques en tout points au sockets UINX sauf qu'il faut initialisé les sockets Windows. Après c'est tout pareil.


Message édité par Kristoph le 07-07-2002 à 17:11:37
Reply

Marsh Posté le 07-07-2002 à 17:27:59    

http://images-eu.amazon.com/images/P/2844272428.08.LZZZZZZZ.jpg
 
:D


Message édité par zion le 07-07-2002 à 17:28:33

---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 07-07-2002 à 17:50:52    


 :lol:  :lol:  :lol:  
[:skyx@v]


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed