Visualizzazione dei risultati da 1 a 10 su 21

Hybrid View

  1. #1
    Quote Originariamente inviata da misterx Visualizza il messaggio
    per quanto riguarda le collisioni non dovrebbero esserci, siamo su una lan swtched
    Se i nodi sono connessi con link full duplex, direttamente allo switch e dopo che la tabella di instradamento è stata popolata.
    Experience is what you get when you don’t get what you want

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    Quote Originariamente inviata da Xaratroom Visualizza il messaggio
    Se i nodi sono connessi con link full duplex, direttamente allo switch e dopo che la tabella di instradamento è stata popolata.
    grazie per le tue risposte.
    Entro nel vivo della questione; ho costruito un piccolo simulatore in codice Borland Builder. Quello che fa è lanciare un thread che crea alcuni pacchetti e li invia alla funzione SpedisciDati().
    In tale funzione ho implementato una sorta di timer il quale invia effettivamente i dati quando è trascorso 1 secondo=1000 ms.
    Studiando le variabili relative al tempo, effettivamente il codice nell'if viene eseguito sempre ogni secondo invece, la dimensione del buffer che io ho chiamat stringa varia da 500000 caratteri a 1500000.

    A questo punto mi chiedo se l'uso di un thread porta fuori strada se si desidera capire quanti byte/secondo (utili) si riesce ad inviare in quanto intervengono i ritardi dello scheduler di windows o altro?

    Grazie


    codice:
    // creazione dei pacchetti
    DWORD WINAPI ThreadTest( LPVOID lpParameter )
    {
            char msgbuf[40];
    
            while(!bAbort)
            {
                    for(int i=0; i < 127; i++)
                    {
                            sprintf(msgbuf, "B%d_5,1,xxx.xxx.xxx.xxx;", i);
                            SpedisciDati(msgbuf);
                    }
            }
    
            return 0;
    }
    
    //---------------------------------------------------------------------------
    
    // i pacchetti vengono inviati al client trascorso 1 secondo
    void SpedisciDati(char *msg)
    {
            stringa+=msg;
    
            if(GetTickCount() - tempo >= 1000 || tempo == 0)
            {
                    ServerSocket1->Socket->Connections[actconn]->SendText(stringa);
                    printf("%d",stringa.Length());
                    stringa="";
                    tempo=GetTickCount();
    
             }
    }
    //---------------------------------------------------------------------------

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    ciao,
    in base al codice che ho postato mi sono venuti in mente i seguenti dubbi: quando viene chiamata la sendtext() decide windows quando inviare il pacchetto sulla rete, giusto?
    Quindi riempie il suo buffer e quando lo ritiene giusto lo invia.

    Allora potrebbe accadere che richiamando la sendtext() per inviare 1 solo carattere alla volta sia più penalizzante in termini di performance che accumulare in un buffer ad esempio 1000 caratteri e richiamare la sendtext()?

    Oppure è indifferente?

    grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.