rosenstolz
19-12-2002, 20:40
Hallo,
ich hab mir in C einen einfachen server und clienten erstellt.
damit habe ich versucht daten (arrays) zu übertragen.
1.ich versuche 400000Bytes zu übertragen. mit hilfe einer schleife speichere ich immer 400bytes in einem array welches ich mit send übertrage,das ganze 1000 mal. beim clienten läufts umgekehrt ich speichere die mit recv empfangenen 400bytes in einem array welches ich dann immer wieder in einen 400000byte großen block schreibe.
das ganze funktioniert meisstens ganz gut, jedoch gelegentlich kommt es vor das weniger übertragen wird, als ob einige "pakete" von 400bytes nicht ankommen. ist das normal oder muss ich in der anwendung die übertragung selbst noch einmal ueberpruefen ?
diese stückelung in 400bytes hab ich vorgenommen da eh nur blöcke bis 1448bytes ankommen, ist das richtig ??
wie macht ihr das wenn ihr groeßere datenmengen/speicherbloecke uebertragen wollt?
hier noch der code,
server:
for(ctr1=0;ctr1<ANZ;ctr1+=PAKET_GR)
{
for(ctr2=0;ctr2<PAKET_GR;ctr2++)
send_block[ctr2]=block[ctr2+ctr1];
if((send_size=send(*remote_sock, send_block, PAKET_GR*sizeof(int),0))==-1)
{
printf("Error: send\n");
exit(-1);
}
size+=send_size;
}
client:
for(ctr1=0;ctr1<ANZ;ctr1+=PAKET_GR)
{
if((recv_size=recv(sock, recv_block, PAKET_GR*sizeof(int),0))==-1)
{
printf("Error: recv\n");
exit(-1);
}
size+=recv_size;
for(ctr2=0;ctr2<PAKET_GR;ctr2++)
block[ctr2+ctr1]=recv_block[ctr2];
}
danke
wünsch euch ein frohes fest und nen guten rutsch,
martin
ich hab mir in C einen einfachen server und clienten erstellt.
damit habe ich versucht daten (arrays) zu übertragen.
1.ich versuche 400000Bytes zu übertragen. mit hilfe einer schleife speichere ich immer 400bytes in einem array welches ich mit send übertrage,das ganze 1000 mal. beim clienten läufts umgekehrt ich speichere die mit recv empfangenen 400bytes in einem array welches ich dann immer wieder in einen 400000byte großen block schreibe.
das ganze funktioniert meisstens ganz gut, jedoch gelegentlich kommt es vor das weniger übertragen wird, als ob einige "pakete" von 400bytes nicht ankommen. ist das normal oder muss ich in der anwendung die übertragung selbst noch einmal ueberpruefen ?
diese stückelung in 400bytes hab ich vorgenommen da eh nur blöcke bis 1448bytes ankommen, ist das richtig ??
wie macht ihr das wenn ihr groeßere datenmengen/speicherbloecke uebertragen wollt?
hier noch der code,
server:
for(ctr1=0;ctr1<ANZ;ctr1+=PAKET_GR)
{
for(ctr2=0;ctr2<PAKET_GR;ctr2++)
send_block[ctr2]=block[ctr2+ctr1];
if((send_size=send(*remote_sock, send_block, PAKET_GR*sizeof(int),0))==-1)
{
printf("Error: send\n");
exit(-1);
}
size+=send_size;
}
client:
for(ctr1=0;ctr1<ANZ;ctr1+=PAKET_GR)
{
if((recv_size=recv(sock, recv_block, PAKET_GR*sizeof(int),0))==-1)
{
printf("Error: recv\n");
exit(-1);
}
size+=recv_size;
for(ctr2=0;ctr2<PAKET_GR;ctr2++)
block[ctr2+ctr1]=recv_block[ctr2];
}
danke
wünsch euch ein frohes fest und nen guten rutsch,
martin