Ciao a tutti!! Volevo creare delle semplici funzioni da utillizare per mandare e siceve file su socket tcp,
utilizzando la read e la write ma ho qualke problemino...qualkuno sa dove sbaglio?
int sendFile(char *fileToSend, int socket)
{
int nread, nwrite, fdfile, sendedByte = 0, dim =0;
char ack[DIM_ACK];
char sendBuffer[DIM_BUFF];
fdfile = open(fileToSend, O_RDONLY);
if( fdfile < 0)
{
printf("\nAttenzione problemi con l'apertura del file: --%s--\n", fileToSend);
close(fdfile);
return ERROR;
}
printf("\nInizio invio file(%s)...\n", fileToSend);
nwrite = write(socket, fileToSend, sizeof(fileToSend));//mando nome al ricevente
if(nwrite < 0)
{
printf("\nImpossimile mandare il file: --%s--\n",fileToSend);
close(fdfile);
return ERROR;
}
while ((nread = read(fdfile, sendBuffer, DIM_BUFF)) > 0)
{
nwrite = write(socket, sendBuffer, nread);
printf("BUFFER:%s|||\n", sendBuffer);
sendedByte += nwrite;
if(nwrite < 0)
{
close(fdfile);
return ERROR;
}
}//while
close(fdfile);
return SUCCESS;
}//FINE SENDFILE
La funzione per ricevere -- il nome del file viene letto all'esterno e passato come parametro
//funzione per ricevere un file da un Server
int rcvFile( char * fileToRcv, int socket)
{
int nread, nwrite, fdfile, rcvByte = 0, dim =0;
char ack[DIM_ACK];
char rcvBuffer[DIM_BUFF];
fdfile = open(fileToRcv, O_WRONLY|O_CREAT|O_TRUNC, 0600);
if( fdfile < 0)
{
printf("\nAttenzione problemi con la creazione del file: --%s--\n", fileToRcv);
close(fdfile);
return ERROR;
}
printf("\nInizio ricezione file(%s)...\n", fileToRcv);
while ((nread = read(socket, rcvBuffer, DIM_BUFF) ) > 0)
{
printf("BUFFER:%s|||\n", rcvBuffer);
nwrite = write(fdfile, rcvBuffer, nread);
rcvByte += nwrite;
if(nwrite < 0)
{
printf("\nAttenzione problemi di scrittura sul file(%s)", fileToRcv);
close(fdfile);
return ERROR;
}
}//while
close(fdfile);
return SUCCESS;
}//FILE RCVFILE
ricevo qualcosa ma praticamente mi crea invece di un unico file ...tanti file che hanno come nome le righe del file ricevute!!!!:P
Grazie in anticipo per la risposta!