Ciao...

il mio problema sta nella ricezione di un file inviato, più specificamente di un DataBase Access (.mdb).

Utilizzo una connessione con i Socket e nel Client faccio :
codice:
SOCKET       ServerContattoFile = socket(AF_INET, SOCK_STREAM, 0);

sockaddr_in  ServiceContattoFile;

char buffer[1000000]="";
struct stat statbuf;

FILE *file;
file=fopen(DataBase.c_str(),"r+");
fstat(fileno(file), &statbuf);

fgets(buffer,statbuf.st_size,file);

String FileSize=statbuf.st_size;
fclose(file);

ServiceContattoFile.sin_family = AF_INET;
ServiceContattoFile.sin_addr.s_addr = inet_addr(IP.c_str());
ServiceContattoFile.sin_port = htons(10010);

connect(ServerContattoFile,(SOCKADDR*)&ServiceContattoFile,sizeof(ServiceContattoFile));

send(ServerContattoFile,buffer,statbuf.st_size, 0);
Oltre al Buffer (che e il contenuto del file) invio anche il contenuto della variabile FileSize che è la dimensione del file, così che nel Server faccio:
codice:
char buffer[1000000];
Socket->ReceiveBuf(buffer,FileSize);

        bool newFile=true;
        HANDLE hFile;
        DWORD  dwWrite=FileSize;
        String DataBase=ROOTDIR+"DB.mdb";
        if(newFile==true)
        {
                hFile =  CreateFile(DataBase.c_str(),GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,0,NULL);
                newFile=false; 
        }

        if(WriteFile(hFile,buffer,FileSize,&dwWrite,NULL)==0)
                ShowMessage("Errore di scrittura File.!");

        FileClose((int)hFile);
Magari non e molto chiaro pero il problema sta nel fatto che il buffer arriva ed e uguale a quello inviato dal server, infatti il file viene creato correttamente e andamdo sulle sue proprieta da windows risulta avere le stesse dimensioni di quello originale, però se lo apro anche con access mi dice che non e un Database riconoscito, e non mi apre niente.

Cosa puoi essere? la dimensione e sempre inferiore a 1000000 byte (1Mb) data dal valore nella variabile FileSize come quello del file inviato.

Grazie a chi mi sa dare una mano...