Je ne parviens pas à envoyer et recevoir des fichiers en travaillant avec les sockets en C.c - programmation socket serveur client - l'envoi de fichiers
Disons que j'ai un fichier qui est 2463 octets grand et je veux envoyer du client au serveur mais il n'envoie jamais le fichier entier. Je fais des recherches sur internet depuis un moment mais je n'ai pas trouvé de solution, donc je serais très heureux si quelqu'un pouvait me dire comment faire ce travail.
Voici mon code:
Client:
char buffer[256];
bzero(buffer, 256);
int block_size;
while(1){
block_size = fread(buffer, sizeof(char), sizeof(buffer), fs); // read from the file
if (block_size == 0){
break;
}
if (block_size < 0){
perror("ERROR: Failed while sending data.");
exit(EXIT_FAILURE);
break;
}
void *p = buffer;
while (block_size > 0) {
int bytes_written = write(clientSocket, buffer, block_size); // send the data to server
if (bytes_written <= 0) {
perror("ERROR: Failed while sending data.");
exit(EXIT_FAILURE);
}
block_size -= bytes_written;
p += bytes_written;
}
bzero(buffer, 256);
}
Serveur:
bzero(buffer, 256);
int file_block_size = 0;
while (1){
bzero(buffer, 256);
file_block_size = read(incoming_socket, buffer,255); // read the data from client
fwrite(buffer, sizeof(char), file_block_size, fr); // write the data to file
if (file_block_size == 0 || file_block_size < 256){
fwrite(buffer, sizeof(char), file_block_size, fr);
break;
}
}
Comme je l'ai dit, cela n'envoie jamais l'intégralité du fichier qui est pour exemple 2,463 octets gros, seulement une partie de celui-ci.
Merci d'avance, sera heureux pour toute aide que je peux obtenir.
Il ne fonctionne pas, dois-je apporter quelques modifications au récepteur (serveur) ainsi que? – Daeto
@Daeto S'il vous plaît poster l'intégralité du code, j'ai le sentiment que ce que vous nous avez montré ce n'est pas tout et s'il vous plaît indenter votre code - il est plus facile à lire. – user5159806
Ceci est l'algorithme d'envoi/réception de fichiers, le reste est l'ouverture de fichiers et l'établissement d'une connexion qui fonctionne bien. – Daeto