Transfert de donnees

cs_gattou Messages postés 3 Date d'inscription dimanche 11 juin 2006 Statut Membre Dernière intervention 27 août 2007 - 30 oct. 2006 à 21:09
cs_gattou Messages postés 3 Date d'inscription dimanche 11 juin 2006 Statut Membre Dernière intervention 27 août 2007 - 1 nov. 2006 à 16:34
Bonjour,
JE BUTE sur un pb et j espere que qqn pourra m aider.


Jai crée une application réseau qui consiste à envoyer des données entre un Pc client et un Pc seveur.pour cela j utilise un socket client sur le Pcclient  (clientsocket) et un socket serveur sur le Pc serveur(serversocket).
J envoie mes donnees sous forme d un tableau de bytes:
buffer : array[0..1000] of byte
 ........
et j ' utilise la fonction sendbuf(buffer, 1001);
 tout cela fonctionne tant que la taille du buffer reste a inferieur à 1024 bytes
si j essai d envoyer un buffer  de taille supérieur (par exemple >3000 octets) je ne recois sur mon socket serveur.
En revanche quand je fais les tests sur la meme machine(c est a dire lorsque le PC fait office de client et de serveur) j arrive a envoyer des buffers d une de 8 ko.
J aimerais savoir s il est possible d envoyer des buffers d une taille supérieur a 1 ko entre 2 Pc et si oui comment faire???
Merci d avance pour toute reponse 

3 réponses

Utilisateur anonyme
30 oct. 2006 à 21:57
Arffff tu utilises TSocket : c'est pas bien !

Borland dis clairement que TSocket n'est plus installé par défaut car il admet plein de bugs. Il faut utiliser les composants Indy ou ICS.

Cependant si tu pouvais reformuler ta question car dur dur de tout saisir. Puis si tu pouvais passer un bout de code voir si tu as pas fait une boulette ailleurs sa serait sympas à toi

@+
0
cs_gattou Messages postés 3 Date d'inscription dimanche 11 juin 2006 Statut Membre Dernière intervention 27 août 2007
30 oct. 2006 à 22:33
Ok,
j essaie d envoyer un tableau de byte d un PC a un autre PC,
tant que ce tableau ne dépasse pas 1 koctet(array [0..1023] of byte), l application marche correctement, mais des que j augmente la taille du buffer(array [0..4096] of byte par exemple) le socketclient envoie le tableau mais du coté serveur je ne recois rien du tout, et aucun message d erreur n apparait me signalant que l envoi ne s est pas réalisé)
voici une partie du code
//coté client

procedure envoi;
var
tampon: array [0..4095] of byte;
..........
begin


// tout d abord j ai rempli mon tampon avec n importe qu elle valeur juste pour tester
for i:=1 to 4096 do
tampon[i]:=byte('a');
form1.client.Socket.SendBuf(tampon,4096);
end;

//coté serveur

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
  var
  nb:integer;
tampon: array[0..4095] of byte;
  begin
nb:=socket.receivelength();
socket.receivebuf(tampon,nb);
label1.caption:=inttostr(nb);// -> je constate que nb<4096 (765octets)
socket.sendtext('recus');
end;

Voila j espere ke j ai eté un peu plus clair
je pense aussi comme toi ,  c possible ke ca soit un bug des sockets , mais j aimerais en etre sur. 
0
cs_gattou Messages postés 3 Date d'inscription dimanche 11 juin 2006 Statut Membre Dernière intervention 27 août 2007
1 nov. 2006 à 16:34
salut tout le monde,
Apres pas mal de recheches et de tests de programmes utilisant les sockets, il me semble qu il y a effectivement pas mal de bugs sur composants sockets.


Je suis donc passé au composants indy (idtcpclient et idtcpserver sous delphi7),
j'aimerais savoir comment avec le composant Indy intégré a Delphi7 pouvoir attendre les informations d'un serveur, et en fonction de celles ci, faire différentes procédures.


j aimerais savoir comment faire pour pouvoir attendre les informations d un serveur.
en effet j arrive a me connecte rau serveur en TCP via le composant IdTCPClient.Connect,  mais comment faire pour se mettre en "attente de réponse.
 
0
Rejoignez-nous