cs_gattou
Messages postés3Date d'inscriptiondimanche 11 juin 2006StatutMembreDernière intervention27 août 2007
-
30 oct. 2006 à 21:09
cs_gattou
Messages postés3Date d'inscriptiondimanche 11 juin 2006StatutMembreDernière intervention27 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
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
cs_gattou
Messages postés3Date d'inscriptiondimanche 11 juin 2006StatutMembreDernière intervention27 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.
cs_gattou
Messages postés3Date d'inscriptiondimanche 11 juin 2006StatutMembreDernière intervention27 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.