Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [C\C++] mandare un file via socket

    Ho bisogno di trasferire dei file da un client a un server via socket... ho pensato di leggere tutto il file con fread, mandarlo con send e poi riscriverlo dall'altra parte con fwrite... può funzionare? ci sono metodi più ortodossi per farlo?

  2. #2

  3. #3
    ok.. mi metto all'opera... grazie mille..


  4. #4
    Magari usa due socket: una per i comandi e una per l'invio file.
    È molto comodo sapere la dimensione del file PRIMA di scaricarlo.
    Su una socket scrivi:
    NAM file.txt
    DIM 2478392835
    COD ASCII #oppure BIN

    Sull'altra socket leggerai DIM bytes, aprira il file NAM con codifica COD.

  5. #5
    Scusa ma non ho capito, io ho pensato di fare così:

    dal client scrivo:

    SEND FILE ciao.txt
    DIM 253445353
    e poi i dati... (la cidifica non la metto perchè è sempre bin)

    e dal server leggo tutto e scrivo su un file... non capisco dove usare la seconda socket

  6. #6
    Il concetto sarebbe di usare due connessioni separate, una per i comandi e l'altra per i dati; dopo il DIM il server resterebbe in attesa su un'altra porta per la connessione dati, da cui otterrebbe il file in questione. In ogni caso puoi tranquillamente fare come hai detto tu.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    ah... ora ho capito. Ma (per curiosità) che vantaggi porta lo scrivere i dati su di una seconda socket?

  8. #8
    Puoi fare altro sulla connessione di controllo mentre i dati vengono trasferiti e puoi trasferire più file alla volta. Il protocollo FTP in effetti funziona proprio così.
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Ah-ah.... ecco il trucco. =) vabbè.. io devo mandare un file per volta e solo quello... grazie comunque...se dovesse servirmi lo terrò presente..

    bye

  10. #10
    Originariamente inviato da Infernal
    ah... ora ho capito. Ma (per curiosità) che vantaggi porta lo scrivere i dati su di una seconda socket?
    È più comodo.
    Su una socket sai che arriveranno solo comandi, sull'altra sei sicuro arriveranno solo dati.
    Se usi una sola socket, invece diventa più complicato gestire comandi e dati separatamente.
    Ad esempio se usi come separatore tra comandi e dati il doppio newline, può capitare che un file abbia doppio newline, e allora la ricezione si interrompe a metà file. Si può ovviare reinviando i dati, ma come vedi diventa complesso.

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.