Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356

    C - Funzione send() help

    Ciao a tutti, sto sviluppando a scopo didattico (non mi sarei mai impelagato con la programmazione così a basso livello) un programma in c.

    Il programma è una semplice applicazione client-server in cui il server apre un file in modalità binaria, legge un tot di byte alla volta e li manda al client. dall'altra parte il client riceve i byte del file e lo ricrea. Niente di pià semplice.

    La mia domanda è: ho provato a leggere 64K byte alla volta e a inviarli e va tutto bene, mosso dalla curiosità ho aumentato il numero di byte e continua ad andare tutto bene, quindi mi chiedo se c'è una limitazione al numero di byte che possono essere spediti con una send(). Inoltre qual 'è il modo più corretto di procedere? ho pensato che fosse meglio leggere intorno a 500-1000 byte alla volta e spedirli in modo da evitare la frammentazione dei pacchetti a livelli più bassi? sbaglio? che aiuto mi potete dare?

    grazie a tutti!
    Jekkil

  2. #2

    Re: C - Funzione send() help

    Originariamente inviato da Jekkil
    Ciao a tutti, sto sviluppando a scopo didattico (non mi sarei mai impelagato con la programmazione così a basso livello) un programma in c.

    Il programma è una semplice applicazione client-server in cui il server apre un file in modalità binaria, legge un tot di byte alla volta e li manda al client. dall'altra parte il client riceve i byte del file e lo ricrea. Niente di pià semplice.

    La mia domanda è: ho provato a leggere 64K byte alla volta e a inviarli e va tutto bene, mosso dalla curiosità ho aumentato il numero di byte e continua ad andare tutto bene, quindi mi chiedo se c'è una limitazione al numero di byte che possono essere spediti con una send(). Inoltre qual 'è il modo più corretto di procedere? ho pensato che fosse meglio leggere intorno a 500-1000 byte alla volta e spedirli in modo da evitare la frammentazione dei pacchetti a livelli più bassi? sbaglio? che aiuto mi potete dare?

    grazie a tutti!
    Puoi inviare tutti i byte che vuoi, ma se il valore è superiore all'MTU, i dati vengono frammentati.
    Quindi in teoria dovresti inviare non più di MTU byte alla volta.
    Di solito l'MTU è 1500, quindi se invii 1024 byte alla volta non dovresti avere problemi.

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Non e' detto ... i dati possono essere frammentati ulteriormente per vari motivi, durante il percorso ...

    Quello che viene garantito da TCP e' che i dati arrivino "tutti" e che siano nel giusto "ordine".

    Ma non e' detto che, ad ogni spedizione di n byte corrisponda una sola ricezione di n byte.

    Quindi, possono essere inviati n byte e possono esserci due arrivi di n/2 e n/2 byte in tempi distinti.

    Il modo corretto di ricevere e' di leggere i dati che arrivano e tenere conto di quanti ne sono arrivati "indipendentemente" da quanti ne sono stati spediti.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.