Transfert de tbleaux par socket en c++builder

Fermé
salisafi Messages postés 2 Date d'inscription mardi 9 janvier 2007 Statut Membre Dernière intervention 10 janvier 2007 - 10 janv. 2007 à 14:34
 coucoumiya - 26 avril 2008 à 16:42
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

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