Anzeige:
Ergebnis 1 bis 6 von 6

Thema: daten uebertragen

  1. #1
    Registrierter Benutzer
    Registriert seit
    12.12.2002
    Beiträge
    10

    daten uebertragen

    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

  2. #2
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    nur mal so eine Frage: Wie sind denn die beiden Rechner verbunden? Netzwerk? Kannte die Befehle send und recv nicht...

  3. #3
    Registrierter Benutzer
    Registriert seit
    12.12.2002
    Beiträge
    10
    die beiden rechner sínd über eine ethernet-verbindung mit einander verbunden.

    hat jemand erfahrung mit dem verändern der MTU bzw. wie ich die maximale MTU einer verbindung ermitteln kann ?

  4. #4
    Registrierter Benutzer Avatar von BLUESCREEN3D
    Registriert seit
    08.11.2002
    Beiträge
    665
    Nimm doch erstmal den minimalen Wert bis es richtig funktioniert

  5. #5
    Registrierter Benutzer
    Registriert seit
    14.09.2002
    Ort
    Bruchsal
    Beiträge
    164
    Bei Ethernet ist die MTU 1500 Bytes.
    Wers nicht weiss, dem hilft ifconfig:
    Code:
    eth0      ...
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              ...

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Du scheint den Rückgabewert von send nicht zu benutzen.
    Wenn das kleiner als der Block ist, mußt du die verbliebenen Daten im nächsten Block drinnen haben.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •