Transfert de tbleaux par socket en c++builder

salisafi Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
 coucoumiya -
bonjour,
désolé je repose cette question ici car par erreur j lé mis dans etudes et formation
Bonjour, SVP si quelqun peut m'aider je serais reconnaissante
je veux envoyer 3tableaux de données V, O et G dont les deux premiers ont la dimension nbV(tableau d'entiers) et G la dim nbG (tableau de ponits x,y,z qui sont des réels)
pour cela j'utilise une socket client d'une coté et socket serveur de l'autre coté. le programme marche pour des petits tableau mais pas pour des grands volume de données.
en voici les codes
client :





void __fastcall TForm1::Button1Click(TObject *Sender)
{
...
ClientSocket1->Socket->SendBuf(&nbV,sizeof(int));
ClientSocket1->Socket->SendBuf(&nbG,sizeof(int));
int n1= ClientSocket1->Socket->SendBuf(V,nbV*3*sizeof(int));
int n2= ClientSocket1->Socket->SendBuf(O,nbV*3*sizeof(int));
int n3= ClientSocket1->Socket->SendBuf(G,nbG*sizeof(Vertex));

serveur :


void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket)
{
.....
Socket->ReceiveBuf(&nbV,sizeof(int));
Socket->ReceiveBuf(&nbG,sizeof(int));
// Allocation des Tables
V = new int [nbV*3];
O = new int [nbV*3];
G = new Vertex [nbG];
int bcount = 0; //total bytes lus
int br = 0;//bytes lus
int n= nbV*3*sizeof(int); //byte à lire
char * buf=(char*)V;


while (bcount < n )
{ // loop until full buffer
br =(Socket->ReceiveBuf(buf,n - bcount)) ;
if (br>0)
{bcount += br; //* increment byte counter *
buf += br; //* move buffer ptr for next read
}

else
break;

}
....
A voir également:

1 réponse

coucoumiya
 
je pense que le probleme se pose au niveau de la taille des socketes, la taille limite d'une sockete est de 1400 octets.
0